我正在使用Nodejs
数据库,mongodb
数据库。我们可以像这样使用 $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/