2017-10-10 87 views
2

擷取蒙戈數據I有一個名爲「演示」一個蒙戈集合,其具有以下結構:在特定格式

{ 
    "_id" : ObjectId("59d600182c44a11cec2b9ac5"), 
    "User_ID" : "user-12", 
    "Status" : { 
     "User_Status" : "Registered", 
     "Location" : "USA" 
    } 
} 

我已經使用以下蒙戈查詢來獲取數據:

db.demo.find({}, 
    { 
     User_ID:1, 
     "Status.User_Status":1 
    }) 

上述查詢的輸出是:

{ 
    "_id" : ObjectId("59d600182c44a11cec2b9ac5"), 
    "User_ID" : "user-12", 
    "Status" : { 
     "User_Status" : "Registered" 
    } 
} 

但我的要求是達到以下的輸出:

{ 
    "_id" : ObjectId("59d600182c44a11cec2b9ac5"), 
    "User_ID" : "user-12", 
    "User_Status" : "Registered" 

} 

是否有任何方法禁用父文檔(狀態),並獲得子文檔「User_Status」的結果。謝謝你的幫助。

回答

2

是的,你可以使用aggregateproject代替find

使用下面的命令得到你想要的結果:

db.dummy.aggregate( 
{ 
    $project: 
    { 
     User_ID:1, 
     User_Status:"$Status.User_Status" 
    } 
}) 
+1

謝謝,其工作正常使用聚合函數並顯示所需的結果。 –

2

使用聚合,而不是尋找和項目運營商。

db.demo.aggregate({$project: {User_Status:'$Status.User_Status', User_ID:'$User_ID'}}); 
+0

謝謝,但使用此查詢,我得到以下結果: { 「_id」:的ObjectId( 「59d600182c44a11cec2b9ac5」) 「USER_ID」: 「用戶12」 } ,因爲它沒有顯示user_status。 –

+0

對不起,我正在使用其他場景,此查詢顯示正確的結果。謝謝! –

+0

不客氣! – gasparms