gpt4 book ai didi

python - Mongo推送到数组内的数组

转载 作者:可可西里 更新时间:2023-11-01 10:34:57 24 4
gpt4 key购买 nike

我是 mongo 的新手,到目前为止使用它没有问题。直到我坚持这一点。我需要将文档推送到数组内的数组。可以引用下面的json。

{
'user_id':'{1231mjnD-32JIjn-3213}',
'name':'John',
'campaigns':
[
{
'campaign_id':3221,
'start_date':'12-01-2012',
'messages':
[
{
'message_id':211134,
'email':'john@gmail.com'
}
]
},
{
'campaign_id':3222,
'start_date':'13-01-2012',
'messages':
[
{
'message_id':315521,
'email':'john@gmail.com'
}
]
}
]
}

我想将一个文档推送到事件数组中的一组消息(无论顺序如何)。这意味着,我需要将新文档附加到消息数组中。所有这些消息都来自另一个数组或每个用户的事件。我使用 python,所以我的代码将是这样的。

query = {"user_id" : "{1231mjnD-32JIjn-3213}", "campaigns.campaign_id": 3221}
message = {"message_id":4213122, "email":"john@gmail.com"}
op = {"$push" : {"campaigns.messages":message}}
mongo.TestDatabase.members.update(query, op)

执行时没有报错。但是文档似乎没有变化(没有更新)。我在这里做错了什么?

最佳答案

出于多种原因,在数组中包含数组几乎总是一个坏主意。我会将这些事件放在一个专门的集合中,以便它们成为顶级文档。

也就是说,您可以通过以下方式推送到特定事件的消息数组:

db.members.update(
{"user_id" : "{1231mjnD-32JIjn-3213}", "campaigns.campaign_id": 3221},
{$push:{"campaigns.$.messages":{"message_id":4213122, "email":"john@gmail.com"}}}
)

关于python - Mongo推送到数组内的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9209670/

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