我有以下資料模型:
"finances" : {
"futurePostings" : [
{
"description" : "test"。
"orderId" : ObjectId("614702b9e98e83bc5d7d3d62")
}
],
"balance" : [] 。
}
然后,我試圖將futurePosting里面的元素移到balance。我可以把它從futurePostings中移除,但我不知道是否有可能使用定位$運算子(或任何其他命令),通過相同的查詢,把這個相同的檔案推到balance中。
db.collection.updateOne(
{
"finances.futurePostings.orderId"。ObjectId(orderId)。
},
{
$push: { "finances.balance": ? },
$pull: {
"finances.futurePostings": { orderId: ObjectId(orderId) },
},
}
);
這可能嗎?
uj5u.com熱心網友回復:
在常規的更新查詢中是不可能的,但是你可以從MongoDB 4.2開始嘗試使用聚合管道更新,
- 從
futurePostings中提取。- 從
futurePostings中提取。 $filter對futurePostings陣列進行回圈迭代,并檢查不等于條件,以洗掉提供的orderId。
- 從
- 推入
balance中$filter對futurePostings陣列進行回圈迭代,并檢查是否等于條件和過濾匹配的orderId元素 。
$concatArrays連接當前的balance陣列和來自上述過濾結果的新元素 。
db.collection.updateOne(
{ "finances.futurePostings.orderId"。ObjectId(orderId) },
[{
$set: {
"finances.futurePostings"/span>: {
$filter: {
input: "$finances.futurePostings"。
cond: {
$ne: ["$this.orderId", ObjectId(orderId)]
}
}
},
"finances.balance": {
$concatArrays: [
"$finances.balance",
{
$filter: {
input: "$finances.futurePostings"。
cond: {
$eq: ["$this.orderId", ObjectId(orderId)]
}
}
}
]
}
}
}]
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324685.html
標籤:
上一篇:顯示資料庫中的隨機檔案
