如何使用java驱动程序将数据插入mongodb集合?

我try (使用空集合):

db.getCollection(collection).update(new BasicDBObject("_id", "12"), dbobject, true, false);

但文档是用_id==ObjectID(…)创建的.不带"12"值.

此代码(js)按预期添加带有_id="12"的文档

db.metaclass.update(
   { _id:12},
   {
     $set: {b:1}
   },
   { upsert: true }
)

mongo-java-driver-2.11.2

推荐答案

如果dbobject只是一个文档,并且不包含更新运算符(例如:$set$setOnInsert),则不能设置_id.

只需传递一个文档就可以替换whole document,这意味着它不会将_id设置为ObjectId

因此,如果您使用更新运算符,则您的示例有效,例如:

db.getCollection(collection).update(
    new BasicDBObject("_id", "12"), 
    new BasicDBObject("$set", new BasicDBObject("Hi", "world")), true, false)

Mongodb相关问答推荐

MongoDB聚合:将文档列表转换为列表

如何在Mongo中查找数组中的特定对象

多键索引,性能问题

MongoDB shell:如何删除列表以外的所有集合

Mongodb 按数组元素聚合组

MongoDB:嵌套数组计数+原始文档

映射数组导致 mongodb 聚合

从嵌套数组中 id 匹配的另一个集合中获取所有字段

更新 Mongodb 中的多嵌套数组

Pymongo API TypeError: Unhashable dict

从 node.js 的 mongodb 集合中删除文档

实现 twitter 和 facebook 之类的主题标签

MongoDB中的readPreference和readConcern有什么区别?

如何使用 mongoose 从 MongoDb 获取数据?

带有 mongodb 和 nodejs 的实时 Web 应用程序

NoSql 参考数据

java.lang.IncompatibleClassChangeError:Implementing class Mongo

Mongodb错误:The positional operator did not find the match needed from the query

如何在 MongoDB 中删除此弃用警告,为什么会这样?

通过浏览器连接mongodb?