2016-04-30 3 views
0

Ich habe die folgende Mongo-Abfrage.

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

Es gibt folgendes Ergebnis:

{ 
    "_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" 
     } 
    ] 
} 

Ich mag die obige Abfrage modifizieren und den _id Zustand, um es hinzuzufügen. So dass es mir nur 1 Ergebnis mit Übereinstimmungen mit gegebenen _id gibt.

Aber nicht in der Lage, es durch zu knacken. Bitte helfen Sie!

Antwort

2

Die $match übernimmt Filterkriterium. Fügen Sie die _id Query Filterkriterien innerhalb von $ match aggregate function hinzu - https://docs.mongodb.org/manual/reference/operator/aggregation/match/

Führen Sie die Abfrage mit unter $ match condition in der letzten Pipeline Ihrer Aggregatabfrage aus.

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