尝试检查文档是否有字段存在,如果存在,在pymongo中编辑它



我想用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)

相关内容

  • 没有找到相关文章