java - BSON 字段名称无效

标签 java json mongodb

我查找了此问题的类似答案,但找不到任何答案。

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);
}

我的 JSON 负载如下所示。

{
    "first": "John",
    "last": "Doe",
    "email": "john@example.com",
}

错误

Invalid BSON field name first

如果我首先从有效负载中删除,它会反对最后一个,依此类推。

最佳答案

updateOne(Filters.eq("_id", new ObjectId(id)), document);
这是你的文档格式造成的
updateOne({这里是条件},{这里是操作})

该文档中没有任何操作,所以导致了这个错误。 你应该这样说:

database.getCollection("user")
        .updateOne(Filters.eq("_id", new ObjectId(id)), combine(set( <field1>, <value1>), set(<field2>, <value2> ) ));

这是official document

在您的情况下,您可以尝试在代码中使用replaceOne() 喜欢

collection.replaceOne(eq("item", "paper"),
       Document.parse("{ item: 'paper', instock: [ { warehouse: 'A', qty: 60 }, { warehouse: 'B', qty: 40 } ] }"));

关于java - BSON 字段名称无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219929/

相关文章:

java - <form :errors> tag in my Spring 3. 0.3 web MVC 应用程序未呈现验证错误

java - 莫尔斯电码解码器处理适应问题

java - 为什么 OpenShift Tomcat 7 (JBoss EWS 2.0) 不支持 <form :*> tags of spring MVC in jsps?

java - future 超时是否会终止线程执行

java - 使用 Groovy JsonBuilder 将 Java 对象转换为 JSON

json - 在PowerShell中删除与正则表达式匹配的JSON对象属性

node.js - Mongoose:populate()/DBref 还是数据重复?

c - 如何为 mongo C 驱动程序构造一个带有用户名密码的 URI。

javascript - jquery 无法正确读取 PHP json_encode() 函数

c# - FindAndModify 在哪里适合 CQRS?