2017-03-18 10 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 docの値を引用符で囲んだことは、jsonの文字列のようになりました。サブ文書として保存するために

は、あなたが好きそれを格納する必要があります:

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

を今、以下の集約投影が動作します:

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

結果:

{ "abcd" : 4.864 } 
+0

この洞察に感謝します。これらの文書は、私がアクセスできない別のmongoデータベースから実際にエクスポートされました。 Jsonの文字列をサブドキュメントに投影する方法はありますか? –

関連する問題