Python 如何将对象插入Mongodb中的对象
所以我已经搜索了两周来寻找这个问题的答案,但似乎这是不可能的,或者我不知道。 例如,正如您所知,在JSON中,您可以这样做(提到拖缆部分,您可以向另一个对象添加任意数量的对象): 在此之前,我尝试使用$set,但它没有按照我的要求工作,它只是替换列表中的最后一个对象: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
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
}
}