当前位置: 首页 > 知识库问答 >
问题:

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

蒲魁
2023-03-14

我想在这里完成的事情很简单。我正在尝试更新MongoDB集合中的单个文档。当我使用任何字段(如“name”)查找文档时,更新查询成功。以下是查询:

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

如果我试图用ObjectId查找文档,它永远不会工作,因为它与任何文档都不匹配。

mongoDB.getCollection("restaurants").updateOne(
    new BasicDBObject("_id", "56110fe1f882142d842b2a63"),
    new BasicDBObject("$set", new BasicDBObject("zipcode", "10462"))
);

是否有可能使此查询与对象ID一起工作?

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

共有3个答案

樊熠彤
2023-03-14

将字符串转换为objectid:

from bson.objectid import ObjectId
db.collection.find_one({"_id":ObjectId('5a61bfadef860e4bf266edb2')})

{u'_id': ObjectId('5a61bfadef860e4bf266edb2'), ...
赫连宏伯
2023-03-14

@sheilak的回答是最好的,但是,

如果希望更新查询采用字符串格式,可以使用{“\u id”、{“$oid”、“56110FE1F88242D842B2A63”}作为过滤器

刘兴朝
2023-03-14

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

构建查询时,请确保从字符串初始化一个新的ObjectId:

mongoDB.getCollection("restaurants").updateOne(
    new BasicDBObject("_id", new ObjectId("56110fe1f882142d842b2a63")),
    new BasicDBObject("$set", new BasicDBObject("zipcode", "10462"))
);
 类似资料:
  • 我在MongoDB中使用Java驱动程序。我有一个集合中的文档id列表。我想在每个文档中更新一个字段,该文档的“\u id”等于列表中的一个文档id。在下面的示例中,我尝试了以下方法: 我的目的是用\u id=123、\u id=456和\u id=789更新文档,将其“field”属性设置为59。 我这样做对吗?

  • 问题内容: 我正在使用MongoDB数据库,该数据库的收集模型包括 班级 , 学生 , 学科 和[学术] 表现 。以下是基于猫鼬的架构和模型: 该集合的文件是最复杂的地段; 示例文档为: 我能够使用以下代码检索现有的班级文档并将其添加到分数中: 但是,如何添加/更新/删除该特定学生的成绩?我需要能够通过以下方式与集合进行交互: 检索所有学生或特定学生的分数(检索数组中的特定元素) 为特定主题添加/

  • 我有一个mongodb集合的mongoose模式,我将其定义如下: 在数据库集合中,我当前有一个文档,它包含除以外的所有属性的值,用于测试目的。我有一个服务器endpoint,当被调用时,它应该发出一个PUT请求来更新文档并向sketches数组中添加一个对象: 在这个web服务中,我基本上试图通过用户名选择用户文档,用户名作为参数传递给url字符串,如下所示: 由于某种原因,当我尝试使用具有以下

  • 问题内容: 我正在使用MongoDB 3.2和MongoDB Java驱动程序3.2。我有一个包含数百个更新文档的数组,这些文档现在应该保存/存储在MongoDB中。为了做到这一点,我遍历数组,并为该数组中的每个文档调用方法。 现在,我想通过批量更新重新实现此逻辑。我尝试在使用MongoDB Java驱动程序3.2的MongoDB 3.2中找到批量更新的示例。 我尝试了这段代码: 但是,似乎这种方

  • 主要内容:update() 方法,save() 方法在 MongoDB 中,可以使用 update() 和 save() 方法来更新集合中的文档。其中 update() 方法可以更新现有文档中的值,而 save() 方法则可以使用传入文档来替换已有文档。 update() 方法 update() 方法用于更新现有文档中的值,其语法格式如下: db.collection_name.update(     <query>,     <update>,

  • 本文向大家介绍在更新MongoDB文档时如何使用自定义变量,包括了在更新MongoDB文档时如何使用自定义变量的使用技巧和注意事项,需要的朋友参考一下 要更新,请使用update(),以下是创建和使用示例自定义变量的语法- 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是在更新MongoDB文档时使用自定义变量的查询- 在find()方法