我想通过 Java 和 Springframework 修改我的 MongoDB(没有其他)。
在 MongoDB 中它应该是这样的:
Documents.update(
{some_condition: true, "some field": "some condition"},
{$set: {"status": "value 1"}},
{multi: true},
function(err, numAffected) {
Documents.update(
{some_condition: true, "some field": {$ne: "some condition"}},
{$set: {"status": "value 2"}},
{multi: true},
function(err, numAffected) {
// All done.
}
)
}
)
现在我需要您的帮助,将其转换为 Java(Spring 框架)。 谢谢你。
我不太擅长在 Java 中使用查询,因此我没有尝试那么多。
您是否尝试使用 if-else 来执行更新? 我建议查看 $cond 运算符来利用 if else 条件。
您可以使用下面的示例使用 $cond 运算符进行转换
db.documents.updateMany(
{ some_condition: true },
[
{
$set: {
status: {
$cond: {
if: { $eq: ["$some field", "some condition"] },
then: "value 1",
else: "value 2"
}
}
}
}
]
);
等效的 Java 代码如下所示:
public void updateDocuments() {
Query query = new Query(Criteria.where("someCondition").is(true));
Update update = new Update();
update.set("status",
new Document("$cond",
new Document("if", new Document("$eq", Arrays.asList("$someField", "some condition")))
.append("then", "value 1")
.append("else", "value 2")
)
);
mongoTemplate.updateMulti(query, update, Document.class);
}