mongoose.js 中带有查询生成器的 OR 运算符
Posted
技术标签:
【中文标题】mongoose.js 中带有查询生成器的 OR 运算符【英文标题】:OR operator with query builder in mongoose.js 【发布时间】:2017-08-21 07:24:54 【问题描述】:如何在 Mongoose 中使用查询生成器执行“OR”运算符?
我尝试过这样的事情:按 ID 或用户名查找用户 但它没有用。
User.findOne()
.where( '_id', 'username').equals(param)
【问题讨论】:
“或”在哪里?你能写出你想要实现的伪代码吗?你用的是哪个版本的猫鼬? 好吧,@boroboris 这是我的问题...如何在猫鼬中进行 OR,我使用的是最新版本的猫鼬 我想问一下您要使用的具体或条件。 哦,抱歉,我试图在 WHERE 中以这种格式 '_id', 'username' 传递一个选项 我在这里找到了部分答案:***.com/questions/7382207/…,所以你也可以看看 【参考方案1】:尝试这些方法:
User.findOne(
$or:[
'condition_1':param, 'condition_2':param
],
function(err,docs)
if(!err) res.send(docs);
);
【讨论】:
在没有where的情况下尝试一下。虽然还没有测试过这个解决方案【参考方案2】:我的解决方案
// Needed to user ObjectID comparison
const ObjectID = require('mongodb');
// Check if param is a valid ID otherwise is Username
let id_or_username = ObjectID.isValid(id) ? '_id' : 'username';
// Find post by ID or Username
Home
.findOne()
.where(id_or_shortid).equals(id)
.exec(callback)
【讨论】:
以上是关于mongoose.js 中带有查询生成器的 OR 运算符的主要内容,如果未能解决你的问题,请参考以下文章