【问题标题】:How do I create a query from an array with mongoose?如何使用 mongoose 从数组创建查询?
【发布时间】:2016-05-20 04:21:37
【问题描述】:

所以我有这个具有 3 个 ID 的数组:["56ba576f66b9add00e4d3082","56b9252266b9add00e4d3080","56b908f166b9add00e4d307f"]

我想构建一个这样的查询:

userModel.find({ $or: 
  [ 
    {_id:"56ba576f66b9add00e4d3082"}, 
    {_id:"56ba576f66b9add00e4d3082"}, 
    {_id:"56ba576f66b9add00e4d3082"} 
  ]}, 
    {email:true});

是否有某种方法可以使用数组生成这样的查询? 我应该使用 mapReduce 还是 $where 方法或其他方法? (我以前从未使用过,所以我不确定是否是这种情况)

也许我问错了问题?非常欢迎任何建议。

【问题讨论】:

    标签: arrays node.js mongodb mongoose mongodb-query


    【解决方案1】:

    尝试使用map函数:

    array = ["56ba576f66b9add00e4d3082","56b9252266b9add00e4d3080","56b908f166b9add00e4d307f"]
    
    userModel.find({ $or: array.map(function(id) {
        return {_id: id};
    })}, {email:true});
    

    【讨论】:

      【解决方案2】:

      如果你只有一个元素,那么就使用$in:

      var array = [
          "56ba576f66b9add00e4d3082",
          "56b9252266b9add00e4d3080",
          "56b908f166b9add00e4d307f"
      ];
      
      userModel.find({ "_id": { "$in": array } }, { "email": true });
      

      $in 条件基本上是应用于同一字段的$or

      【讨论】:

        猜你喜欢
        • 2020-04-12
        • 1970-01-01
        • 2021-04-16
        • 2013-06-29
        • 2016-03-24
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        相关资源
        最近更新 更多