mongodb - $ लुकअप एकत्रीकरण में फ़ील्ड को बाहर करें



mongodb-query aggregation-framework (1)

Mongodb 3.6 में आप $lookup पाइपलाइन के अंदर प्रोजेक्शन ( $project ) का उपयोग कर सकते हैं ... कुछ इस तरह

db.User.aggregate([
  { "$match": { "userID":"1" }},
  { "$lookup":{
    "from": "Skill",
    "pipeline": [
      { "$match": { "languageID": "hindiid", "skillID": { "$in": [ "javaid","pythonid" ] }}},
      { "$project": { "_id": 0 }}
    ],
    "as": "skills"
  }}
])

मैं उन 3 संग्रहों के बीच क्वेरी कर रहा हूं, जिन्हें मैं आउटपुट में हर जगह _id से बाहर करना चाहता हूं

मेरा आउटपुट है:

{
    "_id" : ObjectId("5b6aed5f9bcdb5d4ae64aef5"),
    "userID" : "1",
    "skills" : [ 
        {
            "_id" : ObjectId("5b766b5f1365a4940bb6050f"),
            "skillID" : "javaid",
            "skillname" : "जावा",
            "languageID" : "hindiid"
        }, 
        {
            "_id" : ObjectId("5b766b8c1365a4940bb60535"),
            "skillID" : "pythonid",
            "skillname" : "पायथन",
            "languageID" : "hindiid"
        }
    ],

    "gender" : {
        "_id" : ObjectId("5b7687cd2a2329043e2383d5"),
        "genderID" : "femaleid",
        "gendername" : "महिला",
        "languageID" : "hindiid"
    }
}

प्रश्न:

db.User.aggregate([
  { "$match": { "userID":"1" }},
  { "$lookup":{
    "from": "Skill",
    "pipeline": [
      { "$match": { "languageID": "hindiid", "skillID": { "$in": [ "javaid","pythonid" ] }}},
    ],
    "as": "skills"
  }},
  { "$lookup": {
    "from": "Gender",
    "pipeline": [
      { "$match": { "languageID": "hindiid", "genderID" : "femaleid" }},
    ],
    "as": "gender"
  }},
  { "$unwind": { "path": "$gender", "preserveNullAndEmptyArrays": true }},
  { "$project": { "userID": 1, "skills": 1, "gender": 1 }}
]) 

प्रत्येक वस्तु के लिए आउटपुट में _id है। skill सूची के लिए। प्रत्येक ऑब्जेक्ट में _id है, जहां मैं _id फ़ील्ड को हर जगह छोड़ना चाहता हूं। मैं कैसे बाहर कर सकता हूं?





aggregation-framework