2017-02-22 104 views
2

期間替換值假設此文件:MongoDB的聚集

{ 
    _id : Object(「12918」), 
    username : 「username」, 
    password : 「password」, 
    occupation: { 
     name : 「Football」, 
     code : 254, 
    } 
}, 
{ 
    _id : Object(「12919」), 
    username : 「username2」, 
    password : 「password2」, 
    occupation: { 
     name : 「Basketball」, 
     code : 255, 
    } 
} 

我想返回的查詢:

{ 
    _id : Object(「12918」), 
    occupation : { 
     name : 「*」, 
     code : 254 
    } 
}, 
{ 
    _id : Object(「12919」), 
    occupation : { 
     name : 「*」, 
     code : 255 
    } 
} 

所以,這只是返回領域_id職業查詢。並且在所有記錄中,必須用*替換佔用名稱的職業。名稱

我嘗試這樣的查詢:

aggregate([ 
    { 
     "$project" : 
     { 
      "_id" : 1, 
      「occupation" : 1, 
      「occupation.name" : { $literal:「*」 } 
     } 
    } 
]) 

其返回以下例外:

{ 「OK」:0, 「ERRMSG」:「不能添加用於字段的表達式因爲已經有該字段或其一個子字段的表達。「, 」code「:16400 }

有沒有辦法做到這一點?

+0

你是什麼蒙戈服務器版本? – Veeram

+0

它的版本3.0.1 –

回答

2

您可以指定這樣的occupation嵌套文檔投影:

db.test.aggregate([{ 
    "$project": { 
     "_id": 1, 
     "occupation": { 
      code: 1, 
      name: { $literal: "*" } 
     } 
    } 
}]) 
+0

謝謝伯特蘭! –

1

你可以這樣說:

db.collectionName.aggregate([{$project:{ 
      _id:1, 
      occupation:{"name":{$literal:"*"}, 
         "code":"$occupation.code" 
         } 
      }  
    }])