node.js - Nodejs,mongodb - 使用 $nin 或 $in 作为对象 ID 或 _id

标签 node.js mongodb object

我正在使用 Nodejsmongodb 数据库。我们可以像这样使用 $nin

Model.find({ uname : { $nin : ["sachin","saurav"] } }....

uname 等法线元素的上方单词。但是对于对象 ids(_id),..

Model.find({_id : {$nin : ["6534767457dfgbyb23","wtvwt3wy5etvdh"] } } ...

上面没有给出错误,它显示正确..

var ObjectID = require('mongodb').ObjectID;
var a = new ObjectID("sdfsdznfsdz");
var b=new ObjectID("sdfjwneufhq2rfwefsd");
Model.find({_id : { $nin : [a,b] } }...

上面也没有给出错误...

问题是,我不能像 a,b,c,d...那样手动编写...

我必须以某种正确的格式将所有这些 a、b、c、d... 存储在某个变量中,并且必须这样做

Model.find({_id : {$nin : variable } }

Model.find({_id : {$nin : [variable] } }

我试过了

var string = a+","+b //this didnt work, error : invalid object id
var string = "nfw34qfhrs9"+","+"u89tgngnfdb"  //this also same error
var string = "\"jn4tr43r\""  +  "," + "\"ansfuw37fe\""  //this also same error 

我该怎么办?问题是,除了那些带有 _ids 的项目之外,我应该得到所有项目。

最佳答案

$nin 在 mongo 中的工作方式是它需要检查一组值。

代码: var string = a+","+b 不会使其成为有效数组。当您创建一个值为 sdfsdznfsdz, u89tgngnfdb

的字符串时

所以 $nin 将数组视为该值,而不是您尝试实现的方式。

解决方案是使用这些值创建一个数组。

比如:

var ids = new Array( new ObjectId("1124edcef241"), new ObjectId("56943decfeca845") );

// Dont put [ ] as a parameter. Just send a variable thats an array     
Model.find( {_id : { $nin : ids } } ); 
...

如果您对数组有点模糊,我建议您阅读以下内容:

http://www.w3schools.com/js/js_obj_array.asp

关于node.js - Nodejs,mongodb - 使用 $nin 或 $in 作为对象 ID 或 _id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10208339/

相关文章:

node.js - Node 检查器不启动

javascript - 如何为 Atom、WhatsApp 等 Electron 应用程序添加安装屏幕?

javascript - express 和sequelize 将循环结构转换为JSON

node.js - $lookup 嵌套对象数组

node.js - Mongoose 验证错误

java - JAVA中当基类的引用变量指向子类的对象时,内部会发生什么

javascript - 如何为每一行reactjs设置日期选择器、时间选择器的值

javascript - 使用node杀死所有休眠的mysql池连接

node.js - Mongodb插入和排序

javascript - 交换对象数组中的元素