gpt4 book ai didi

MongoDB:使用数组过滤器更新插入

转载 作者:行者123 更新时间:2023-12-05 03:26:28 25 4
gpt4 key购买 nike

我有这样的收藏:

mc.db.collection.insert_many([
{"key_array": [1], "another_array": ["a"]},
{"key_array": [2, 3], "another_array": ["b"]},
{"key_array": [4], "another_array": ["c", "d"]},
])

我正在使用这种更新:

mc.db.collection.update_one(
{"key_array": 5},
{"$addToSet": {"another_array": "f"}},
upsert=True
)

它适用于更新,但我在尝试更新时遇到了麻烦:它创建一个包含非数组 key_array 字段的文档,如下所示

{
"_id": ObjectId(...)
"key_array": 5,
"another_array": ["f"]
}

虽然我想要这个

{
"_id": ObjectId(...)
"key_array": [5],
"another_array": ["f"]
}

此外,我不能使用 {"key_array": [5]} 样式查询,因为它不会匹配长度 > 1 的现有数组。

那么,是否有机会在更新时保存此类行为,并在插入时接收正确的文档结构?

任何帮助将不胜感激

最佳答案

这应该有所帮助。 https://www.mongodb.com/docs/manual/reference/operator/update/setOnInsert/

mc.db.collection.update_one(
{"key_array": 5},
{
"$addToSet": {"another_array": "f"},
"$setOnInsert": {"key_array": [5], ...}
},
upsert=True
)

关于MongoDB:使用数组过滤器更新插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71716930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com