MongoDB(Java驱动程序)一次性在子子集合中添加元素

时间:2015-10-26 12:34:55

标签: mongodb collections updates

我有一个看起来像这样的文件:

{
 "id":1,
 "layers": 
           [{
            "id" : 100,
            "files": [{
                       "id":1,
                       "name":"test"
                     }]
            }]
   }

@Document(collections="tests")
public class Test() {
   string id
   Set<..> layers;
}

public class Layers() {
 List<..> files;
}

是否可以(给定documentId和layerId)在一个查询中添加新文件对象?

之类的东西
db.test.update(
  { _id: 1 },
  { $push:
     {
       "layers.100.files": {"id":2,"name":"test2:}
     }
  }
)

当我尝试上述操作时,我收到如下错误: 不能使用part(contentLayers ....)来遍历元素....

1 个答案:

答案 0 :(得分:2)

db.test.update(
  { $and: [{_id: "1"}, {"layers.id": "100" }]},
  { $push:
     {
       "layers.$.files": 1
     }
  }
)

这是非java版本,重要的一点是在数组之前有这个$

请注意&#39;可能&#39;这是另一种方式,但上面的工作对我来说是