use*_*628 17 python mongodb pymongo tornado-motor
如果userID已经存在,我想返回true,否则从我的集合返回false.我有这个函数,但它总是返回True.
def alreadyExists(newID):
if db.mycollection.find({'UserIDS': { "$in": newID}}):
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
如果用户ID已经存在,我怎么能让这个函数只返回true?
Phi*_*ipp 28
db.collection.countDocuments不返回布尔值,它返回一个游标.要检查该游标是否包含任何文档,请使用游标计数方法.
find.
顺便说一下:newID是一个数组吗?如果不是,则不应使用if db.mycollection.find({'UserIDS': { "$in": newID}}).count() > 0-operator.你可以干脆做$in
从Mongo 4.0.3/ 开始PyMongo 3.7.0,我们可以使用count_documents:
if db.collection.count_documents({ 'UserIDS': newID }, limit = 1) != 0:
# do something
Run Code Online (Sandbox Code Playgroud)
与可选参数一起使用limit,这提供了一种方法来查找是否至少存在一个匹配项。
限制匹配项的出现次数将使集合扫描在找到匹配项后立即停止,而不是遍历整个集合。
请注意,这也可以写成如下,因为它1是True在python条件下解释的:
if db.collection.count_documents({ 'UserIDS': newID }, limit = 1):
# do something
Run Code Online (Sandbox Code Playgroud)
在Mongo/的早期版本中Pymongo,count可以使用(已弃用并由count_documentsin 代替Mongo 4):
if db.collection.count({ 'UserIDS': newID }, limit = 1) != 0:
# do something
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32842 次 |
| 最近记录: |