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);

直譯:this

docKey == "public" && owner == "zhangsan"

須要知足枚舉的兩個條件才能篩選出相應數據;code

and與or聯合使用

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

直譯:get

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);

直譯:io

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

或者以下的寫法function

let filter = {
  $or: [
          {
              docKey: "public"
          },
          {
              $where: `this.docKey == "private" && (this.member.indexOf("zhangsan") > -1 || this.owner == "lisi")`
          }
      ]
}
db.getCollection('docs').find(filter);
相關文章
相關標籤/搜索