好吧,所以我有一個項目與MEAN.js,它使用貓鼬設置。在Mongoose查詢不與_id字段工作
我想要搜索MongoDB中電子郵件或displayName字段與正則表達式匹配的所有用戶,並且_id與特定的一組ID不匹配。
這裏是我在做查詢:
var re = new RegExp(req.body.pattern, 'i');
var memberIDs = '';
req.body.members.forEach(function(member){ //members have a user field which is an ObjectID
memberIDs += (member.user + ' ');
});
memberIDs += req.user._id;
User.find().or([{ 'displayName': { $regex: re }},
{ 'email': { $regex: re }}])
.nor([{'_id' : memberIDs}])
.select('displayName email')
.exec(function(err, users) {
if(err){
res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
}else{
res.json(users);
}
});
};
這不工作,我從錯誤中得到的消息只是一個空字符串。 查詢工作正常,沒有.nor()方法。我不能像這樣使用_id字段嗎?
非常感謝你,它就像一個魅力! – tiansivive 2014-11-04 12:48:46
沒有設法編輯以前的評論。 我使用空格字符串的原因是因爲這就是貓鼬的文檔對nor操作符所說的。 你說我來自不同的背景是正確的,但我知道我可以像這樣構建查詢對象,我會這麼做的,這可能是因爲我是MongoDB和Mongoose的新手。我也不知道美元運營商。 貓鼬的文檔使用輔助方法很多,有沒有什麼理由爲什麼我沒有他們更好? – tiansivive 2014-11-04 13:00:25
@lokias如果您閱讀答案中的內容,這非常符合我的說法。這是由於將參數誤解爲「空格分隔的字符串」或對象記號提供的。如果你注意到上述所有內容,那麼查詢語句的「字段選擇」部分總是被寫爲貓鼬翻譯的「字符串」而不是對象形式「{」displayName「:1,」email「:1}'which它解釋爲。這與您開始列表的條件不同。即''_id「:」1 2 3 4 5 6 7「'作爲七個單獨的值。這是錯誤的,所以你錯了 – 2014-11-04 14:33:13