2016-02-23 10 views
7

से वापस लौटने के लिए सीमित करता है, $lookup के साथ करने के बाद, मैं केवल कुछ फ़ील्ड लौटने का अनुरोध करना चाहता हूं, न कि संपूर्ण दस्तावेज़।

मैं निम्नलिखित प्रश्न हैं:

db.somecollection.aggregate([{ 
    $lookup: { 
     from: "campaigns", 
     localField: "campId", 
     foreignField: "_id", 
     as: "campaign" 
    } 
}, { 
    $unwind: "$campaign" 
}, { 
    $lookup: { 
     from: "entities", 
     localField: "campaign.clientid", 
     foreignField: "_id", 
     as: "campaign.client" 
    } 
}]); 

यह अनुरोध मुझे वापस आ जाएगी यह:

{ 
"_id" : ObjectId("56cc7cd1cc2cf62803ebfdc7"), 
"campId" : ObjectId("56c740e4479f46e402efda84"), 
"articleId" : ObjectId("56c742c06094640103ba3843"), 
"campaign" : { 
    "_id" : ObjectId("56c740e4479f46e402efda84"), 
    "clientid" : ObjectId("56c740b8479f46e402efda83"), 
    "client" : [ 
     { 
      "_id" : ObjectId("56c740b8479f46e402efda83"), 
      "username" : "someusername", 
      "shhh" : "somehashedpassword", 
      "email" : "[email protected]", 
     } 
    ] 
} 

अनुरोध अच्छी तरह से काम करता है, लेकिन मैं केवल के लिए प्राप्त करने के लिए campaign.client में फ़ील्ड्स फ़िल्टर करना चाहते हैं उदाहरण _id और username। क्या मोंगोडीबी aggregate अनुरोध में ऐसा करने का कोई तरीका है?

+9

उपयोग एक '$ project' मंच। '{ $ परियोजना: { _id1: 1, campId: 1, articleId: 1, campaign._id: 1, campaign.clientid: 1, campaign.client._id: 1, अभियान। client.username: 1 } } ' –

+0

@ सिद्धार्थजमेरा आपको इसे एक जवाब में बदलना चाहिए, आपने अभी अपना दिन बचाया है! –

उत्तर

9

बस इसके साथ दूसरों की मदद करने के लिए, @ सिद्धार्थजमेरा ने सही जवाब दिया, मुझे केवल "campaign.clientid" जैसे नेस्टेड मानों के लिए डबल कोट्स जोड़ने की आवश्यकता थी।

अंतिम कोड होना चाहिए:

db.somecollection.aggregate([{ 
    $lookup: { 
     from: "campaigns", 
     localField: "campId", 
     foreignField: "_id", 
     as: "campaign" 
    } 
    }, { 
     $unwind: "$campaign" 
    }, { 
     $lookup: { 
      from: "entities", 
      localField: "campaign.clientid", 
      foreignField: "_id", 
      as: "campaign.client" 
     } 
    }, 
    { 
     $project : { 
      "_id1" : 1, 
      "campId" : 1, 
      "articleId" : 1, 
      "campaign._id" : 1, 
      "campaign.clientid" : 1, 
      "campaign.client._id" : 1, 
      "campaign.client.username" : 1 
     } 
    } 
]); 
संबंधित मुद्दे