移动数组

时间:2016-04-25 11:48:09

标签: mongodb

我有一个包含子文档的数组。我需要将此子文档中的字段带到子文档外部。该文件是这样的。

field1: "abc"
field2: "dsf"
field3: {

    allowed-type: [
               field4: "32"
}

我需要在数组allowed-type之外取字段4并将其放在field3下。我试过以下

db.collection.find({}).forEach( function (doc) {   
    doc.field3.field4 = 'doc.field3.allowed-type.field4';
db.collection.save(doc);  });

问题是数组allowed-type包含一个连字符,所以我不能在不使用双引号的情况下引用它。但是当我使用双引号时,field4将被指定为'doc.field3.allowed-type.field4'作为字符串,而不是从doc.field3.allowed-type.field4中获取值。

1 个答案:

答案 0 :(得分:0)

聚合是您的解决方案。您首先必须展开文档,这将基本上展平文档并从阵列中取出“32”。然后,您需要获取返回的结果并将“field4”值投影到新字段,该字段是“field3”下的文档。 pretty()只是以可读格式呈现结果。

db.fields.aggregate(
   {$unwind:"$field3.allowed-type.field4"}, 
   {$project: 
       {field1:1, 
        field2:1, 
        field3: 
           {field4: "$field3.allowed-type.field4"
}} }).pretty();