2016-04-30 14 views
0

以下のmongoクエリがあります。

db.ServiceProvider.aggregate([ 
    { 
     $unwind: "$PostCommentUserIDs" 
    }, 
    { 
     $lookup: 
     { 
      from: "Parents", 
      localField: "PostCommentUserIDs", 
      foreignField: "ID", 
      as: "ParentDetailsArr" 
     } 
    }, 
    { 
     $match: { "ParentDetailsArr": { $ne: [] } } 
    } 
]) 

それは次のような結果が得られます。

{ 
    "_id" : ObjectId("57245af1588aec5b118b4567"), 
    "ServiceProviderID" : 3, 
    "Title" : "test", 
    "PostedMessage" : "test", 
    "TotalComments" : 0, 
    "TotalShares" : 0, 
    "TotalThanks" : 0, 
    "AddedOn" : "2016-04-30", 
    "LastModifiedOn" : "2016-04-30 07:12:49", 
    "PostAttachment" : { 
     "ImagePath" : "" 
    }, 
    "PostCommentUserIDs" : "3", 
    "PostComments" : [ 
     { 
      "ID" : "1462000372388480634", 
      "UserID" : 3, 
      "CommentMessage" : "1", 
      "TotalThanks" : 0, 
      "AddedOn" : "2016-04-30 07:12:52", 
      "LastModifiedOn" : "2016-04-30 07:12:52", 
      "CommentAttachment" : { 
       "ImagePath" : "" 
      } 
     }, 
    ], 
    "Subscriber" : [ ], 
    "ParentDetailsArr" : [ 
     { 
      "_id" : ObjectId("572447e6588aec32108b4569"), 
      "ID" : "3", 
      "UID" : "0Xb1fHqzR3HZVJWQc8aAbB77UkwSnmasdQrtp9qySVdqipsYs6eC7rEt", 
      "Name" : "Chinmay Kulkarni", 
      "ProfileImagePath" : "images3_3_1460348144#SIZE#.jpeg" 
     } 
    ] 
} 
{ 
    "_id" : ObjectId("57246137588aec41118b4567"), 
    "ServiceProviderID" : 3, 
    "Title" : "test", 
    "PostedMessage" : "test", 
    "TotalComments" : 0, 
    "TotalShares" : 0, 
    "TotalThanks" : 0, 
    "AddedOn" : "2016-04-30", 
    "LastModifiedOn" : "2016-04-30 07:39:35", 
    "PostAttachment" : { 
     "ImagePath" : "" 
    }, 
    "PostCommentUserIDs" : "3", 
    "PostComments" : [ 
     { 
      "ID" : "14620019791507102321", 
      "UserID" : 3, 
      "CommentMessage" : "1", 
      "TotalThanks" : 0, 
      "AddedOn" : "2016-04-30 07:39:39", 
      "LastModifiedOn" : "2016-04-30 07:39:39", 
      "CommentAttachment" : { 
       "ImagePath" : "" 
      } 
     }, 
    ], 
    "Subscriber" : [ ], 
    "ParentDetailsArr" : [ 
     { 
      "_id" : ObjectId("572447e6588aec32108b4569"), 
      "ID" : "3", 
      "UID" : "0Xb1fHqzR3HZVJWQc8aAbB77UkwSnmasdQrtp9qySVdqipsYs6eC7rEt", 
      "Name" : "Chinmay Kulkarni", 
      "ProfileImagePath" : "images3_3_1460348144#SIZE#.jpeg" 
     } 
    ] 
} 

は、私は上記のクエリを変更し、それに_id条件を追加したいです。そのため、与えられた_idとの一致で1つの結果しか得られないようにします。

しかし、それはひっくり返ることができません。助けてください!

答えて

2

$matchはフィルタの基準になります。 $ match集計関数内に_idクエリフィルタ条件を追加する - https://docs.mongodb.org/manual/reference/operator/aggregation/match/

集計クエリの最後のパイプラインで$ match条件以下でクエリを実行します。

db.ServiceProvider.aggregate([ 
    { 
     $unwind: "$PostCommentUserIDs" 
    }, 
    { 
     $lookup: 
     { 
      from: "Parents", 
      localField: "PostCommentUserIDs", 
      foreignField: "ID", 
      as: "ParentDetailsArr" 
     } 
    }, 
    { 
     $match: { "ParentDetailsArr": { $ne: [] }, "_id" : ObjectId("XXXX") } 
    } 
]) 
関連する問題