MongoDB插入嵌套数据



我有json格式的数据,像这样:

{
{'rank': 1, 'keyword': 'A'}
{'rank': 2, 'keyword': 'B'}
{'rank': 3, 'keyword': 'C'}
}

现在我想将数据存储在MongoDB数据库中,并使数据结构如下:

{
datetime: "2021-01-26T02:35:00+0400",
data: [
{'rank': 1, 'keyword': 'A'}
{'rank': 2, 'keyword': 'B'}
{'rank': 3, 'keyword': 'C'}
]
}

下面是我的代码,但是,它将每个数据块存储在一个对象中。是否可以在嵌套结构中存储数据?

for r in ranks:
rank = r.get("rank")
keyword = r.get("keyword")

result = {"data":[
{
"rank": rank,
"key word": keyword
}]
}

collection.insert_one({"datetime": date_time, "data": result})
  1. 使用"修改相同的文档
  2. 使用$push将对象添加到"data"数组

例子:

collection.update( {"datetime": "2021-01-26T02:35:00+0400"} , { $push:{data:{ rank:4 , keyword:"D" }}}  )

将给你:

{
"_id" : ObjectId("600f0b64419e1279778fe326"),
"datetime" : "2021-01-26T02:35:00+0400",
"data" : [
{ "rank" : 1, "keyword" : "A" },
{ "rank" : 2, "keyword" : "B" },
{ "rank" : 3, "keyword" : "C" },
{ "rank" : 4, "keyword" : "D" }
]
}

同样在你的python示例中,你似乎在循环后执行单个对象插入操作…,如果你想一个一个地添加,则在循环中添加操作…,但你最好准备好整个数组的对象,并立即插入…

如果文档不存在这样的日期时间,而您想要在新文档中插入数据,则必须在更新操作中添加{upsert:true}…

最新更新