2017-03-03 7 views
1

FirstArraySecondArrayの要素が「名前」フィールドに共通している場合、_idを返すMongoDBでクエリを実行するにはどうすればよいですか?2つのオブジェクト配列を比較し、共通の要素があるかどうかを確認します

これは、コレクションの構造である:

{ 
    "_id" : ObjectId("58b8d9e3b2b4e07bff8feed5"), 
    "FirstArray" : [ 
     { 
      "Name" : "A", 
      "Something" : "200 ", 
     }, 
     { 
       "Name" : "GF", 
      "Something" : "100 ", 
     } 
    ], 
    "SecondArray" : [ 
     { 
      "Name" : "BC", 
      "Something" : "200 ", 
     }, 
     { 
       "Name" : "A", 
      "Something" : "100 ", 
     } 
    ] 
} 

答えて

6

あなたのクエリに対して$setIntersection$redactを試すことができます。 SecondArrayName sのFirstArrayName Sを比較し、$size$redact続く一般的な名前文書の配列を返し、維持し、他の文書を削除する0となり、比較する

$setIntersection

db.collection.aggregate(
    [{ 
    $redact: { 
     $cond: { 
     if: { 
      $eq: [{ 
      $size: { 
       $setIntersection: ["$FirstArray.Name", "$SecondArray.Name"] 
      } 
      }, 0] 
     }, 
     then: "$$KEEP", 
     else: "$$PRUNE" 
     } 
    } 
    }, { 
    $project: { 
     _id: 1 
    } 
    }] 
) 
+0

あなたは私の人生を救った! – Oper

関連する問題