2015-11-10 106 views
5

我想通過使用貓鼬過濾器從我的mongoDB數據庫中獲取數據。情景是,數據庫中的每個用戶對象都具有某些字段,如「Region」「Sector」貓鼬「查找」多個條件

目前我得到的所有包含關鍵字「區域」用戶在那裏的物體,像這樣:

// Filter all healthcare bios by region 
app.get('/user',function(req, res) { 

// use mongoose to get all users in the database 
User.find({region: "NA"}, function(err, user) 
{ 
    // if there is an error retrieving, send the error. nothing after res.send(err) will execute 
    if (err) 
    { 
     res.send(err); 
    } 
    // return all todos in JSON format 
    console.log(user); 
    res.json(user); 

}); 
}); 

如何可以把一些條件,貓鼬,它返回包含兩個用戶「區域「& &」部門「在他們的對象。目前它只返回那些有region關鍵字的用戶。

我曾嘗試使用$和操作符,但我無法讓它工作。

+0

我看不到投票的理由。這個問題很清楚,並且我已經向您展示了我迄今爲止所做的工作。 – Skywalker

+0

或者它只是缺乏顯示你試圖達到你所要求的內容,只有一個語法錯誤可能是它不適合你的原因。所以你的錯誤,並沒有很好的研究。這是降薪的標準,因爲「錯誤」對其他人沒有什麼幫助。 –

回答

13
app.get('/user',function(req, res) { 

User.find({region: "NA",sector:"Some Sector"}, function(err, user) 
{ 
    if (err) 
    { 
     res.send(err); 
    } 
    console.log(user); 
    res.json(user); 

}); 
}); 

如果您想要區域爲「NA」或扇區爲「某個扇區」的數據。您可以使用$or運營商。

User.find({$or:[{region: "NA"},{sector:"Some Sector"}]}, function(err, user) 
{ 
    if (err) 
    { 
     res.send(err); 
    } 
    console.log(user); 
    res.json(user); 

}); 
+0

道歉你的回答是正確的。我犯了一個語法錯誤。將接受作爲答案。謝謝。 – Skywalker

+0

@Vishnu,我將如何去尋找region ='NA'或sector ='Some Sector'?我一直在尋找這個解決方案。 –

+0

@YuChen回答更新 – Vishnu

3

如果你想包含任何地區或部門,只要兩者都存在於你需要在User.find下面的查詢,同時結果: {region: {$exists:true},sector: {$exists:true}}

,$and只要等效因爲你正在尋找不同的領域。