如何使用Java中的ObjectID更新MongoDB中的文档

Ale*_*der 2 java mongodb mongodb-query

我想在这里完成的工作非常简单.我正在尝试更新MongoDB集合中的单个文档.当我使用任何字段(例如"name")查找文档时,更新查询会成功.这是查询:

mongoDB.getCollection("restaurants").updateOne(
    new BasicDBObject("name", "Morris Park Bake Shop"),
    new BasicDBObject("$set", new BasicDBObject("zipcode", "10462"))
);
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用ObjectId查找文档,它永远不会工作,因为它不匹配任何文档.

mongoDB.getCollection("restaurants").updateOne(
    new BasicDBObject("_id", "56110fe1f882142d842b2a63"),
    new BasicDBObject("$set", new BasicDBObject("zipcode", "10462"))
);
Run Code Online (Sandbox Code Playgroud)

是否可以使此查询与对象ID一起使用?

我同意我的问题有点类似于如何使用Java mongodb驱动程序中的"_id"字段查询文档?但是,在尝试更新文档时,我没有收到任何错误.它只是不匹配任何东西.

she*_*lak 6

您当前正在尝试基于字符串而不是ObjectId进行更新.

确保在构建查询时从字符串初始化新的ObjectId:

mongoDB.getCollection("restaurants").updateOne(
    new BasicDBObject("_id", new ObjectId("56110fe1f882142d842b2a63")),
    new BasicDBObject("$set", new BasicDBObject("zipcode", "10462"))
);
Run Code Online (Sandbox Code Playgroud)

  • 我错过了。感谢您的帮助,问题已解决! (2认同)