如何搜索具有多个属性的猫鼬数据?

Posted

技术标签:

【中文标题】如何搜索具有多个属性的猫鼬数据?【英文标题】:How do I search the mongoose data with with multiple properties? 【发布时间】:2021-12-09 14:44:20 【问题描述】:

我按用户(userID)创建了一个团队,现在我想搜索该用户是否存在于团队中。

exports.start = async (message) => 

const check = await group.find(userID1:message.author.id ||userID2:message.author.id || userID3:message.author.id)
console.log(check);

我的数据库是这样的


    "_id" : ObjectId("6173107fcf643f15e1fced83"),
    "userID1" : "769819933390667796",
    "userName1" : "Davion",
    "userID2" : "247276609894219777",
    "userName2" : "Davion",
    "userID3" : "898413310872006716",
    "userName3" : "Davion",
    "team" : "3",
    "__v" : 0

【问题讨论】:

【参考方案1】:

$或类似逻辑或运算符

exports.start = async (message) => 
  const check = await group.find(
    $and: [
      
        $or: [
           userID1: message.author.id ,
           userID2: message.author.id ,
           userID3: message.author.id 
        ]
      
    ]
  )
  console.log(check);

$and 对一个或多个表达式(表达式 1、表达式 2 等)组成的数组执行逻辑与运算,并选择满足所有表达式的文档。

exports.start = async (message) => 
  const check = await group.find(
    $and: [
       userID1: message.author.id ,
       userID2: message.author.id ,
       userID3: message.author.id 
    ]
  )
  console.log(check);

【讨论】:

以上是关于如何搜索具有多个属性的猫鼬数据?的主要内容,如果未能解决你的问题,请参考以下文章

具有多个子路径的猫鼬填充路径

如何在我的猫鼬模式中引用多个模式?

跨多个模型导出和重用我的猫鼬连接

跨多个模型导出和重用我的猫鼬连接

用于多个对象数组的猫鼬嵌套模式

如何基于作为参数传递的动态模式的猫鼬模型?