0

我有一个像这样的 MongoDB 文档结构

{
  "_id": "002",
  "list": [
    {
      "year": "2015",
      "entries": [{...}, {...}]
    },
    {
      "year": "2014",
      "entries": [{...}, {...}]
    }
  ]
}

我想将一个新元素推入“条目”。我知道可以使用

collection.updateOne(
    Filters.eq("_id", "002"),
    new Document("$push", new Document("list.0.entries", "{...}")
);

但这附加到“列表”的第一个元素的“条目”。我想附加到 2015 年“年”的“条目”。如何使用 MongoDB Java 驱动程序 API (3.0) 执行此操作?

4

2 回答 2

0

我认为你应该使用类似的东西

Filters.and(Filters.eq("_id", "002"), Filters.eq("list.year", "2015"))

PS 正如过滤器 javadoc 所建议的那样,对其使用静态导入很方便(通过跳过“过滤器”部分使其不那么冗长)

于 2015-04-19T20:46:07.867 回答
0

您可以使用

Bson filter = Filters.and(Filters.eq("_id", "002"), Filters.eq("list", Filters.eq($elemMatch, Filters.eq("year", "2015")) Document list = collection.find().filter(filter)

之后,您可以遍历列表以查找 2015 年并获取该条目并通过 java 代码插入新元素。将更新后的列表保存在本地变量中,并通过更新命令将其写入您的 mongoDB。

于 2015-10-30T14:17:23.250 回答