PyMongo 检查条目是否已经在数组中
PyMongo checking if entry is already in array
我想要一组访问 x
网页的 IP,并将它们放在一个数组中。但是现在每次连一个IP都会加,多人连多次就会重复很多
目前我正在使用
query = {"_id": paste_id, "ip": {"$ne": real_ip}
collection.update_one(query, {"$push": {"ip": ip}})
但是(逻辑上)只是将条目推入数组,有什么方法可以检查 ip
是否已经在数组中?
更新的答案
您发布的更新代码正在检查 real_ip
,然后插入 ip
;所以你没有检查你实际更新的项目。
下面我原来的回答仍然是正确的做法;然而,这个完整的示例演示了尝试插入 real_ip
5 次,它显示该值仅插入一次:
from pymongo import MongoClient
collection = MongoClient()['mydatabase'].collection
result = collection.insert_one({'ip': []})
paste_id = result.inserted_id
real_ip = '1.2.3.4'
for i in range(5):
query = {"_id": paste_id, "ip": {"$ne": real_ip}}
collection.update_one(query, {"$push": {"ip": real_ip}})
print(list(collection.find()))
打印:
[{'_id': ObjectId('5feefdb862e2ed3ea952a035'), 'ip': ['1.2.3.4']}]
原始答案
添加检查 IP 是否已在 ip
数组中,例如
query = {'ip': {'$ne': ip}}
我想要一组访问 x
网页的 IP,并将它们放在一个数组中。但是现在每次连一个IP都会加,多人连多次就会重复很多
目前我正在使用
query = {"_id": paste_id, "ip": {"$ne": real_ip}
collection.update_one(query, {"$push": {"ip": ip}})
但是(逻辑上)只是将条目推入数组,有什么方法可以检查 ip
是否已经在数组中?
更新的答案
您发布的更新代码正在检查 real_ip
,然后插入 ip
;所以你没有检查你实际更新的项目。
下面我原来的回答仍然是正确的做法;然而,这个完整的示例演示了尝试插入 real_ip
5 次,它显示该值仅插入一次:
from pymongo import MongoClient
collection = MongoClient()['mydatabase'].collection
result = collection.insert_one({'ip': []})
paste_id = result.inserted_id
real_ip = '1.2.3.4'
for i in range(5):
query = {"_id": paste_id, "ip": {"$ne": real_ip}}
collection.update_one(query, {"$push": {"ip": real_ip}})
print(list(collection.find()))
打印:
[{'_id': ObjectId('5feefdb862e2ed3ea952a035'), 'ip': ['1.2.3.4']}]
原始答案
添加检查 IP 是否已在 ip
数组中,例如
query = {'ip': {'$ne': ip}}