[英]How to use '*' in Mongodb?
我有2個從ajax發送的變量,例如name
和age
,它們的默認值為'*'。
當設置了name
和age
時,例如name = 'a'
, age = 20
,我可以在mongodb(pymongo)中查詢:
info = list(db.test.find({'name': name, 'age': age}))
但是有時間age
或name
未設定,我必須寫:
if age == '*' and name == '*':
info = list(db.test.find())
elif name == '*':
info = list(db.test.find({'age': age}))
elif age == '*':
info = list(db.test.find({'name': name}))
有什么辦法可以寫一個查詢? 喜歡:
info = list(db.test.find({'name': name, 'age': age}))
一種選擇是將*
視為{'$exists': True}
:
name = {'$exists': True} if name == '*' else name
age = {'$exists': True} if age == '*' else age
info = list(db.test.find({'name': name, 'age': age}))
或者,通過在字典中保留name
和age
來更好地在python方面解決它:
params = {}
if name != '*':
params['name'] = name
if age != '*':
params['age'] = age
info = list(db.test.find(params))
尚不清楚您要查詢返回什么, age
和name
的初始值是什么。 請創建一個可復制的示例(舉一些示例文檔示例,您正在運行的查詢,返回的內容以及您希望看到的返回內容)。
您是否正在查找未設置名稱(或年齡)的所有文檔?
db.col.find({'name':'*'})
您是否正在查找name
=名稱或age
=年齡的所有文檔?
db.col.find({ '$or': [{'name': name } , {'age': age} ] })
請指定您要查詢返回的具體內容。
我不同意alecxe,但是,您不應該“在python方面解決”。 您應該對如何在MongoDB中編寫查詢進行更多研究,並讓數據庫集群在處理方面承擔所有繁重的工作。 就是我的.02。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.