0

以下のような 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
         }]
        }

2 番目のアイテム コレクション:-

                        {
                      "_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 の 2 番目の子も同様です。ややこのように

    Query.EQ("ItemMetadata.MetadataName", "DropDown") and (Query.EQ("ItemMetadata.MetadataValue", "78"]
4

1 に答える 1

0

返すドキュメントに関しては、「MetadataNameMetadataValue の両方が同じ要素で一致する配列要素を含むドキュメントのみを指定するにはどうすればよいですか」とクエリを実行します。使用する演算子は$elemMatchです。

ドキュメントのどの部分を返すかについては、フィールド全体を返すか、フィールド全体を返さないかの選択しかありません。通常のクエリでは、格納された配列内の値のサブセットを取得することはできません。(集約フレームワーク $unwind を使用することはできますが、実際には必要ではなく、高いトランザクション読み取りを推奨するわけでもありません)

于 2013-03-05T18:53:01.733 に答える