无法在MongoDB中投影子文档

时间:2017-03-18 05:16:30

标签: mongodb aggregation-framework

我在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"}}])

是否与原始子文档中有其他引号的事实有关?

1 个答案:

答案 0 :(得分: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 }