gpt4 book ai didi

mongodb - 对空数组使用 $push

转载 作者:行者123 更新时间:2023-12-02 19:22:35 24 4
gpt4 key购买 nike

我有一个 mongo 文档,它有一个名为“events”的数组字段。

这个字段有时可以为空。

我正在使用 $push 将一个元素添加到“事件”数组。问题是,当“事件”字段为空时它无法工作

例如,如果在数据库中它看起来像这样:

{
"_id" : ObjectId("4d2d8deff4e6c1d71fc29a07"),
"user_id" : "714638ba-2e08-2168-2b99-00002f3d43c0",
"events" : null
}

然后我用 $push 运行更新:

{ $push : { "events" : { "profile" : 10, "data" : "X"}}};

它将失败,因为 events 为空。

我可以使用查询数据库的两个步骤来解决这个问题。但是,我可以在 1 个查询中完成吗?

如果数组字段不为空,我想将事件添加到数组,但如果为空,首先创建“events”空数组,然后将事件添加到数组。

最佳答案

从 MogoDB 4.2 开始,您可以使用 Updates with Aggregation Pipeline .这允许将更新作为单个操作执行。

var OBJ_TO_ADD = { "profile": 10, "data": "X" }

db.test.updateOne(
{ "_id" : ObjectId("4d2d8deff4e6c1d71fc29a07") },
[
{
$set: {
events: {
$ifNull: [
{ $concatArrays: [ "$events", [ OBJ_TO_ADD ] ] },
[ OBJ_TO_ADD ]
]
}
}
}
]
)

关于mongodb - 对空数组使用 $push,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62860695/

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