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 运算符的主要内容,如果未能解决你的问题,请参考以下文章

Python 操作Redis

python爬虫入门----- 阿里巴巴供应商爬虫

Python词典设置默认值小技巧

《python学习手册(第4版)》pdf

Django settings.py 的media路径设置

Python中的赋值,浅拷贝和深拷贝的区别