[英]MongoDB Java Driver: How to use $cond operator?
我編寫了以下 MongoDB 更新查詢:
db.getCollection("product").update(
{},
[
{
$set: {
availability: {
$cond: [
{
$eq: ["$availability", true],
},
"Yes",
"No",
],
},
},
}
]
);
更新product
集合中的所有文檔:根據當前值設置availability
屬性的新值。
我正在嘗試為 MongoDB Java 驅動程序重寫上面的查詢:
db.getCollection("product")
.updateMany(new BsonDocument(), Updates.set("available", "YES"));
但我堅持使用$cond
運算符,我不知道如何將$cond
運算符從 MongoDB 查詢轉換為 Java 驅動程序。
你能建議可能的選擇嗎?
您需要使用需要ClientSession
而不是MongoClient
的不同變體
UpdateResult updateResult = this.mongoColWrite.
updateMany(this.clientSession, new Document(), setUpdateList);
empty doc
是條件。 您可以在那里添加任何條件。
您必須提供更新列表。
[
{
$set: {
availability: {
$cond: [
{
$eq: ["$availability", true],
},
"Yes",
"No",
],
},
},
}
]
LinkedList<Object> condList = new LinkedList<Object>();
LinkedList<Object> eqArray = new LinkedList<Object>();
eqArray.add("$availability");
eqArray.add(true);
condList.add(new Document("$eq"), eqArray);
condList.add("Yes");
condList.add("No");
Document availDoc = new Document("$cond", condList)
Document setDoc = new Document("$set", availDoc);
LinkedList<Document> setUpdateList = new LinkedList<Document>();
setUpdateList.add(setDoc);
這就是我通常的做法。 每個數組都是一個list
。 每個 object 都是一個Document
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.