arrays - $in 在环回中不起作用

标签 arrays node.js mongodb

我有一个字符串数组,如下所示:

['57b69c9d4ae615ef0e312af6','57b69bf477b8e5cd0eb38c88'];

我将其转换为 ObjectId,如下所示:

var objectIds = [];
  for(var i=0; i<expenseIds.length; i++){
    var _id = new ObjectId(expenseIds[i]);
    objectIds.push(_id);
  }

对象ID:

[ 57b69c9d4ae615ef0e312af6, 57b69bf477b8e5cd0eb38c88 ]

现在我在 mongoDb 中使用 $in 查询来获取所有详细信息,如下所示:

app.models.xxxxx.find({"_id" : {"$in" : objectIds}}, function(err, res){
    if(err){

    } else {
      console.log(res);
    }
  });

但它没有过滤。 xxxxx 集合中的所有文档正在返回。请分享您的想法。提前致谢。

编辑: 当我在 mongo shell 中运行命令时:

db.xxx.find({ _id: { '$in': [ 57b69c9d4ae615ef0e312af6, 57b69bf477b8e5cd0eb38c88 ] }});

它抛出错误:

SyntaxError: identifier starts immediately after numeric literal @(shell):1:35

最佳答案

您需要为您的模型启用allowExtendedOperators

//model.json
...
"options": {
    "validateUpsert": true,
    "mongodb": {
      ...
      "allowExtendedOperators": true
    }
  },
...

更新

您的过滤器也有问题。

app.models.xxxxx.find({where: {"_id" : {"$in" : objectIds}}}, function(err, res){
    if(err){

    } else {
      console.log(res);
    }
  });

您还使用内置运算符:

app.models.xxxxx.find({where: {id : {inq : objectIds}}}, function(err, res){
        if(err){

        } else {
          console.log(res);
        }
      });

关于arrays - $in 在环回中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39266997/

相关文章:

Mongodb - 没有结果返回时性能不佳

c++ - 在不同函数中更改结构中的值

javascript - 如何使用es6数组方法将多维数组转换为图表数据

arrays - 在 Codesys 中定义数组

node.js - 在以太坊部署智能合约时出现错误如何解决?

python - 从 Python 快速查询大型 MongoDB 集合

java - 使用套接字发送对象 - JAVA

node.js - 运行 mocha 时如何将特定的测试文件设置为第一个?

Node.js ftp put方法写的是要上传到ftp服务器的文件名,不是实际文件

mysql - 同一类型的多个表的数据库设计