Python 如何将对象插入Mongodb中的对象

Python 如何将对象插入Mongodb中的对象,python,database,mongodb,object,pymongo,Python,Database,Mongodb,Object,Pymongo,所以我已经搜索了两周来寻找这个问题的答案,但似乎这是不可能的,或者我不知道。 例如,正如您所知,在JSON中,您可以这样做(提到拖缆部分,您可以向另一个对象添加任意数量的对象): 在此之前,我尝试使用$set,但它没有按照我的要求工作,它只是替换列表中的最后一个对象: list = ["test1", "test2", "test3", "test4"] for i in list: s = status.find_one({"_id": 1}) s2 = s["streamer

所以我已经搜索了两周来寻找这个问题的答案,但似乎这是不可能的,或者我不知道。 例如,正如您所知,在JSON中,您可以这样做(提到拖缆部分,您可以向另一个对象添加任意数量的对象):

在此之前,我尝试使用$set,但它没有按照我的要求工作,它只是替换列表中的最后一个对象:

list = ["test1", "test2", "test3", "test4"]
for i in list:
    s = status.find_one({"_id": 1})
    s2 = s["streamers"]
    if i in s2:
        print("y")
    elif not i in s2:
        status.update_one({"_id": 1}, {"$set": {"streamers": {i: False}}})
现在我想要的是

data = {
    "name": "amirreza",
    "age": 24,
    "streamers": {
        "test1": False, "test2": False, "test3": False, "test4": False
    }
} 
但它给出了:

data = {
    "name": "amirreza",
    "age": 24,
    "streamers": {
        "test4": False
    }
} 
status.update\u one({“\u id”:1},{“$set”:{“拖缆”:{i:False}}})
不应在循环中。通过在
s2
中循环,您正在为每次迭代更新
s2
,以便可视化,第一次迭代将
s2
设置为
“拖缆”:{“test1”:False}
,第二次将
s2
设置为
“拖缆”:{“test2”:False}
,等等,直到您到达列表的末尾,最后一次迭代将
s2
设置为
“拖缆”:{“test4”:False}
,您会得到这个结果,因为$set操作符就是这样工作的,它会更新整个对象


您已接近解决方案。您只需通过循环
s2
来构造一个对象,最后,在生成对象后,您将退出for循环,您将调用
status.update_one({“\u id”:1},{“$set”:{“拖缆”:您的对象}})
。这样,您可以使用所有拖缆更新
状态
,而不是单独更新每个拖缆。

谢谢!,它起作用了,但仍然有一个问题,我不想每次都更新整个“拖缆”,我只想在字典中没有拖缆的情况下添加它们。你也可以用Python来做<代码>如果键不在d中:我这样做了,但我不想删除以前的数据,我只想添加新的数据。(因为它每60秒重复一次)
data = {
    "name": "amirreza",
    "age": 24,
    "streamers": {
        "test4": False
    }
}