我有monogodb数据结构如下:
{
"_id" : ObjectId("512c4c468c08631ff0dbb02c"),
"ReferenceNumber" : "MongoDb",
"Title" : "Shashi",
"CreatedUserId" : "users/1027",
"Content" : "s",
"CustomerId" : "customers/257",
"StatusDefinitionId" : "sd",
"ItemMetadata" : [{
"MetadataId" : "MetadataDefinitions/839",
"MetadataName" : "DropDown",
"MetadataValue" : "78"
}, {
"MetadataId" : "MetadataDefinitions/839",
"MetadataName" : "DropDown",
"MetadataValue" : "DropDown3"
}, {
"MetadataId" : "MetadataDefinitions/838",
"MetadataName" : "Number1",
"MetadataValue" : "546"
}],
"Portfolios" : [{
"_id" : "portfolios/226",
"IsDefault" : true
}]
}
第二项收藏: -
{
"_id" : ObjectId("512c4c468c08631ff0dbb02c"),
"ReferenceNumber" : "MongoDb",
"Title" : "Shashi",
"CreatedUserId" : "users/1027",
"Content" : "s",
"CustomerId" : "customers/257",
"StatusDefinitionId" : "sd",
"ItemMetadata" : [{
"MetadataId" : "MetadataDefinitions/839",
"MetadataName" : "DropDown",
"MetadataValue" : "78"
}, {
"MetadataId" : "MetadataDefinitions/839",
"MetadataName" : "DropDown",
"MetadataValue" : "DropDown4"
}, {
"MetadataId" : "MetadataDefinitions/838",
"MetadataName" : "Number1",
"MetadataValue" : "546"
}],
"Portfolios" : [{
"_id" : "portfolios/226",
"IsDefault" : true
}]
}
我想在mongodb c#中获取查询。我只需要返回第一个项目集合。
(ItemMetadata.MetadataName= "DropDown" and ItemMetadata.MetadataValue="78" and ItemMetadata.MetadataName= "DropDown" and ItemMetadata.MetadataValue="DropDown3")
与ItemMetadata的第二个子项类似。 有点像这样
Query.EQ("ItemMetadata.MetadataName", "DropDown") and (Query.EQ("ItemMetadata.MetadataValue", "78"]
答案 0 :(得分:0)
就要返回的哪个文档而言,您将查询“我如何指定只包含元数据元素和MetadataValue在同一元素中匹配的数组元素的文档” - $elemMatch是要使用的运算符。
对于要返回的文档的哪些部分,您唯一的选择是返回整个字段或不返回整个字段。在常规查询中,您不能存储数组中的值的子集。 (尽管您可以使用聚合框架$ unwind,但不是真正必要或推荐的高事务读取)