mongoose数据查询or、and、where等用法

or

$or 条件指定参数;

//member = ["zhangsan", "lisi", "wangwu"];
let filter = {
  $or: [
    {docKey: "public"},
    {owner: "zhangsan"},
    {member: "lisi"}
  ]
}
db.getCollection('docs').find(filter);
  1. 数据筛选or是或查询
  2. 满足下面的条件其中之一就可以查询出相关数据
  3. 如果数据库参数是数组,直接会从数组里面匹配是否包含相关数据 如上:member

and

$and 条件指定参数;

let filter = {
  $and: [
    {docKey: "public"},
    {owner: "zhangsan"}
  ]
}
db.getCollection('docs').find(filter);

直译:

docKey == “public” && owner == “zhangsan”

需要满足枚举的两个条件才能筛选出相应数据;

and与or联合使用

let filter = {
  $or: [
          {
              docKey: "public"
          },
          {
              $and: [{docKey: "private"}, {$or:[{member: "zhangsan"}, {owner: "lisi"}]}]
          }
      ]
}
db.getCollection('docs').find(filter);

直译:

docKey == “public” || (docKey == “private” && (member.indexOf(“zhangsan”)>-1 || owner==“lisi”))

where

let filter = {
  $or: [
          {
              docKey: "public"
          },
          {
              $where: function(){
                return this.docKey == "private" && (this.member.indexOf("zhangsan") > -1 || this.owner == "lisi");
              }
          }
      ]
}
db.getCollection('docs').find(filter);

直译:

docKey == “public” || (docKey == “private” && (member.indexOf(“zhangsan”)>-1 || owner==“lisi”))

或者如下的写法

let filter = {
  $or: [
          {
              docKey: "public"
          },
          {
              $where: `this.docKey == "private" && (this.member.indexOf("zhangsan") > -1 || this.owner == "lisi")`
          }
      ]
}
db.getCollection('docs').find(filter);
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值