如何使用Java驱动程序以单个操作在单个文档的不同字段上执行不同的更新? 假设我有一个这样的文件
{
_id: ObjectId("1234567890")
...
elements: String[],
last_user: String,
...
}
,我想向elements
数组添加一个字符串并更新last_user
。我可以做到
import static com.mongodb.client.model.Filters.*;
import static com.mongodb.client.model.Updates.*;
...
Bson filter = eq(DBCollection.ID_FIELD_NAME, new ObjectId("1234567890"));
Bson addElement = push("elements", "a new string");
Bson updateLastUser = set("last_user", "last user name");
mycollection.updateOne(filter, addElement);
mycollection.updateOne(filter, updateLastUser);
它可以工作,但是那是两个单独的操作,我根本不喜欢它。
我看到了in this question,有了壳我就可以做到这一点
db.mycollection.update({ "_id": "1234567890" },
{
"$push" : { "elements": "a new string" },
"$set" : { "last_user": "last user name" }
}
);
但是我不知道如何使用Java驱动程序构建包含$push
和$set
的单个更新对象。我很确定这很简单而且很愚蠢,但是我找不到解决方案。