我有一個帶有內部字串陣列的小型 mongo 集合。
{
"_id" : ObjectId("62853dc84409dcc9213f8bca"),
"test" : [
"aaaa",
"bbb",
"ccc"
]
}
{
"_id" : ObjectId("62853dd74409dcc9213f8bcb"),
"test" : [
"aaa",
"bbbb",
"ddddd"
]
}
如何使用當前值修改具有字串長度標準的陣列中的內部值?例如,我想將 * 連接到所有長度為 3 的元素。
結果一定是。
{
"_id" : ObjectId("62853dc84409dcc9213f8bca"),
"test" : [
"aaaa",
"bbb*",
"ccc*"
]
}
{
"_id" : ObjectId("62853dd74409dcc9213f8bcb"),
"test" : [
"aaa*",
"bbbb",
"ddddd"
]
}
我有一些代碼,但它沒有給出任何結果。
db.studs.updateMany(
{},
{ $set: {"test.$[element]": { "$concat": ["element", " ", "*"]}}},
{ arrayFilters: [{"element": {"$strLenCP": {"$eq": 3}}}]})
uj5u.com熱心網友回復:
詢問
- 你需要
$concat哪個是聚合運算子 - 您可以使用管道更新 MongoDB >= 4.2 來完成
- 映射并檢查大小,如果是
size=3concat"*",否則不要更改陣列的成員
*您嘗試使用更新運算子來執行此操作,但我們不能混合聚合和更新運算子,我們要么進行管道更新,要么進行正常更新
玩蒙哥
db.studs.update({},
[{"$set":
{"test":
{"$map":
{"input": "$test",
"in":
{"$cond":
[{"$eq": [{"$strLenCP": "$$this"}, 3]},
{"$concat": ["$$this", "*"]}, "$$this"]}}}}}],
{"multi": true})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/477469.html
