我想用pymongo工作一点,我目前有一个数据库,我需要看看里面,如果文档有一个特定的字段存在,那么文档应该更新。
First I created a entry by running this a few times:
import pymongo
client = pymongo.MongoClient()
mydb = client["mydb"]
data = {'name': "john"}
mycol = mydb['something']
mycol.insert_one(data)
按我想要的方式工作
现在,我需要检查在name = "john"处是否存在条目。
我遵循了这个教程,它基本上只显示了这个片段:db.student.find({name:{$exists:true}})
我试图实现这个,所以它现在看起来像这样:
import pymongo
from pymongo import cursor
client = pymongo.MongoClient()
mydb = client["mydb"]
print(mydb.something.find({"name":{"john"}}))
,这只返回<pymongo.cursor.Cursor object at 0x7fbf266239a0>
我真不知道该怎么办。
我也在这里看了一些类似的问题,并找到了一些类似的建议:
print(mydb.values.find({"name" : "john"}).limit(1).explain())
但是这只是给了我一个很长的json字符串,顺便说一下,如果我在"john"中加入其他东西,它不会改变。
如何检查一个文档是否包含"name"=";john"存在吗?也许还可以编辑文档?
编辑
我现在尝试了以下解决方案:
import pymongo
from pymongo import cursor
client = pymongo.MongoClient()
mydb = client["mydb"]
mycol = mydb['something']
name = "john"
print(mycol.find_one({name:{"$exists":True}}))
但是它只打印我None
将find()
更改为find_one()
,或者如果您希望得到多个结果,则使用for循环迭代游标:
print(db.student.find_one({'name':{'$exists': True}}))
或
for student in db.student.find({'name': {'$exists': True}}):
print(student)