我在Mongo数据库中有以下集合结构:
[{
"_id": {
"$oid": "number"
},
"OfferNumber": "string",
"ComercialCode": "string",
"ContractNumber": null,
"FirstDocSent": {
"$date": "date"
},
"EventDate": "date",
"EndDate": "date",
"LastMaintenance": {
"$date": "date"
},
"UserMaintenance": "rny",
"PurgePhysicalDocDate": {
"$date": "date"
},
"StoredDocuments": [
{
"CodeEmission": "string",
"ItemNumber": "string",
"DocumentType": "number",
"DocumentNumber": "number",
"OriginSystemCode": "rny",
"StoreDate": {
"$date": "date"
},
"IdGed": "number",
"IdS3": "number"
}
]
}]
StoredDocuments数组包含表示具有唯一IdS3的文档的对象。
基于这个结构,我试图用C#实现一个查询,它只通过IdS3选择一个文档,但是我不能通过搜索所有数组并只返回一个对象来进行过滤。到目前为止,我实现的查询只选择父对象。有什么实施思路吗?先谢谢你了。
1条答案
按热度按时间9jyewag01#
我想你正在寻找类似this example的东西。
请注意,这个查询看起来很混乱,但
$replaceRoot
,newRoot
和$arrayElemAt
只是从数组中获取第一个元素并将其像对象一样输出。查询的其余部分非常简单,使用
$match
进行第一次过滤,避免在每个文档中执行$filter
。然后$filter
,得到数组中的元素,其中IdS3
等于你想要的数。所以使用c#你可以尝试MongoDB Compass export to specific language提供的类似的东西(我不是c#Maven,但你被标记为
.net-driver
):