2017-03-18 101 views
0

我在MongoDB中有以下文檔。無法在MongoDB中投影子文檔

實際輸出:

> db.test.findOne({},{_id:0,abc:1}) 
{ "abc" : "{ \"d\" : 4.864, \"t\" : 16, \"g\" : 5 }" } 

我想帶給現場abc.d到根,但下面的方法不起作用。

> db.test.aggregate([{$project:{"_id":0,"abc.d":1}}]) 

> db.test.aggregate([{$project:{"_id":0,abcd:"$abc.d"}}]) 

它是否有與事實,有原子文檔的附加引號呢?

+0

恐怕「abc」的值不是'子文檔',而只是一個包含JSON對象的字符串。 – AlexDenisov

回答

0

在您的文檔中,abc不是子文檔。將abc文檔的值放在引號中使得它像一個json字符串,沒有別的。

爲了將其存儲爲一個子文件,你需要將它存儲喜歡:

{ 
    "abc" : { 
    "d" : 4.864, 
    "t" : 16, 
    "g" : 5 
    } 
} 

現在,下面聚集投射將工作:

db.test.aggregate([{$project:{"_id":0,abcd:"$abc.d"}}]) 

結果:

{ "abcd" : 4.864 } 
+0

感謝您的洞察。這些文件實際上是從另一個我無法訪問的mongo數據庫導出的。有沒有辦法將Json字符串投影到子文檔中? –