我查找了这个问题的类似答案,但找不到任何答案。
public void update(String id, String user) {
Document document = Document.parse(user);
UpdateResult result = database.getCollection("user")
.updateOne(Filters.eq("_id", new ObjectId(id)), document);
System.out.println(result);
}
Run Code Online (Sandbox Code Playgroud)
我的 JSON 负载如下所示。
{
"first": "John",
"last": "Doe",
"email": "john@example.com",
}
Run Code Online (Sandbox Code Playgroud)
错误
首先无效的 BSON 字段名称
如果我从有效负载中删除第一个,它会反对最后一个,依此类推。
updateOne(Filters.eq("_id", new ObjectId(id)), document);
这是你的文档格式造成的
updateOne({here is condition }, {here is operation})
该文档中没有任何操作,因此导致了此错误。你应该这样说:
database.getCollection("user")
.updateOne(Filters.eq("_id", new ObjectId(id)), combine(set( <field1>, <value1>), set(<field2>, <value2> ) ));
Run Code Online (Sandbox Code Playgroud)
这是官方文档
在您的情况下,您可以尝试在您的代码中使用replaceOne(),例如
collection.replaceOne(eq("item", "paper"),
Document.parse("{ item: 'paper', instock: [ { warehouse: 'A', qty: 60 }, { warehouse: 'B', qty: 40 } ] }"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22412 次 |
| 最近记录: |