Mongodb查询子进程

时间:2013-02-26 12:46:16

标签: c# mongodb mongodb-.net-driver

我有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"]

1 个答案:

答案 0 :(得分:0)

就要返回的哪个文档而言,您将查询“我如何指定只包含元数据元素和MetadataValue在同一元素中匹配的数组元素的文档” - $elemMatch是要使用的运算符。

对于要返回的文档的哪些部分,您唯一的选择是返回整个字段或不返回整个字段。在常规查询中,您不能存储数组中的值的子集。 (尽管您可以使用聚合框架$ unwind,但不是真正必要或推荐的高事务读取)