복붙노트

[MONGODB] $ 조회 집계 필드를 제외

MONGODB

$ 조회 집계 필드를 제외

나는 출력 도처에 _id 제외 할 3 명 컬렉션을 사이에 질의하고

내 출력은 다음과 같습니다

{
    "_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 필드를 제외 모든 개체가 _id이 기술 목록은 _id.Example 있습니다. 어떻게 제외 할 수 있습니까?

해결법

  1. ==============================

    1.MongoDB를 3.6에서 당신은 $ 조회 파이프 라인 내부에 돌기 ($ 프로젝트)를 사용할 수 있습니다 ... 이런 식으로 뭔가를

    MongoDB를 3.6에서 당신은 $ 조회 파이프 라인 내부에 돌기 ($ 프로젝트)를 사용할 수 있습니다 ... 이런 식으로 뭔가를

    db.User.aggregate([
      { "$match": { "userID":"1" }},
      { "$lookup":{
        "from": "Skill",
        "pipeline": [
          { "$match": { "languageID": "hindiid", "skillID": { "$in": [ "javaid","pythonid" ] }}},
          { "$project": { "_id": 0 }}
        ],
        "as": "skills"
      }}
    ])
    
  2. from https://stackoverflow.com/questions/51950121/exclude-fields-in-lookup-aggregation by cc-by-sa and MIT license