簡體   English   中英

如何在Mongodb中使用'*'?

[英]How to use '*' in Mongodb?

我有2個從ajax發送的變量,例如nameage ,它們的默認值為'*'。

當設置了nameage時,例如name = 'a'age = 20 ,我可以在mongodb(pymongo)中查詢:

info = list(db.test.find({'name': name, 'age': age}))

但是有時間agename未設定,我必須寫:

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}))

或者,通過在字典中保留nameage來更好地在python方面解決它:

params = {}
if name != '*':
    params['name'] = name
if age != '*':
    params['age'] = age

info = list(db.test.find(params))

尚不清楚您要查詢返回什么, agename的初始值是什么。 請創建一個可復制的示例(舉一些示例文檔示例,您正在運行的查詢,返回的內容以及您希望看到的返回內容)。

您是否正在查找未設置名稱(或年齡)的所有文檔?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM