use*_*837 18 java upsert mongodb
如何使用java-driver将数据插入mongodb集合?
我尝试(空收集):
db.getCollection(collection).update(new BasicDBObject("_id", "12"), dbobject, true, false);
Run Code Online (Sandbox Code Playgroud)
但文档是使用_id == ObjectID(...)创建的.不是"12"值.
此代码(js)按预期添加_id ="12"的文档
db.metaclass.update(
{ _id:12},
{
$set: {b:1}
},
{ upsert: true }
)
Run Code Online (Sandbox Code Playgroud)
蒙戈-java的驱动程序2.11.2
pra*_*upd 19
如果您使用的是mongo-java驱动程序3,则以下.updateOne()带有{upsert, true}标志的方法可以正常工作.
void setLastIndex(MongoClient mongo, Long id, Long lastIndexValue) {
Bson filter = Filters.eq("_id", id);
Bson update = new Document("$set",
new Document()
.append("lastIndex", lastIndexValue)
.append("created", new Date()));
UpdateOptions options = new UpdateOptions().upsert(true);
mongo.getDatabase(EventStreamApp.EVENTS_DB)
.getCollection(EventCursor.name)
.updateOne(filter, update, options);
}
Run Code Online (Sandbox Code Playgroud)
Ros*_*oss 17
您不能设置_idif dbobject是否只是一个文档而不包含更新运算符,例如:$set,$setOnInsert.
只是传递一个文档将替换整个文档意味着它没有设置_id回落ObjectId
因此,如果您使用更新运算符,您的示例将起作用:
db.getCollection(collection).update(
new BasicDBObject("_id", "12"),
new BasicDBObject("$set", new BasicDBObject("Hi", "world")), true, false)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25307 次 |
| 最近记录: |