Mongoose 的带有 $or 条件的 find 方法无法正常工作
最近我开始在 Nodejs 上使用 MongoDB 和 Mongoose。
当我将 Model.find 方法与 $or
条件和 _id
字段一起使用时,Mongoose 无法正常工作。
这不起作用:
User.find({
$or: [
{ '_id': param },
{ 'name': param },
{ 'nickname': param }
]
}, function(err, docs) {
if(!err) res.send(docs);
});
顺便说一句,如果我删除“_id”部分,这确实起作用!
User.find({
$or: [
{ 'name': param },
{ 'nickname': param }
]
}, function(err, docs) {
if(!err) res.send(docs);
});
在 MongoDB shell 中,两者都可以正常工作。
Recently I start using MongoDB with Mongoose on Nodejs.
When I use Model.find method with $or
condition and _id
field, Mongoose does not work properly.
This does not work:
User.find({
$or: [
{ '_id': param },
{ 'name': param },
{ 'nickname': param }
]
}, function(err, docs) {
if(!err) res.send(docs);
});
By the way, if I remove the '_id' part, this DOES work!
User.find({
$or: [
{ 'name': param },
{ 'nickname': param }
]
}, function(err, docs) {
if(!err) res.send(docs);
});
And in MongoDB shell, both work properly.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我通过谷歌解决了这个问题:
I solved it through googling:
我恳请大家使用 Mongoose 的查询构建器语言和承诺而不是回调:
阅读有关 Mongoose 查询 的更多信息。
I implore everyone to use Mongoose's query builder language and promises instead of callbacks:
Read more about Mongoose Queries.
您还可以混合添加
$or
和and
来为您的函数提供更多灵活性、选项和稳健性,如下所示:因此,这意味着您的 find() 将查找 (_id = idParam OR name = nameParam ORnickname =nicknameParam) AND (age = AgeParam) 的所有用户,
我希望这对那里的人有帮助。
干杯!!!
You can also add a mix of
$or
andand
to give your functions more flexibility, options and robustness, like so:So this means that your find() will look for all users where (_id = idParam OR name = nameParam OR nickname = nicknameParam) AND (age = ageParam)
I hope this helps someone out there.
Cheers!!!