我正在使用Nodejs
,mongodb
数据库。我们可以像这样使用$nin
Model.find({ uname : { $nin : ["sachin","saurav"] } }....
正常元素(如uname
等)的上述字词。但对于对象ID(_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
之外的所有项目。
答案 0 :(得分:10)
$ 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 } } );
...
只是让你对阵列感到朦胧,我建议读一读:
答案 1 :(得分:5)
暂时无法发表评论,但只是想在此处添加new ObjectID()
并非为我工作,但new ObjectId()
(小写d)确实有效。希望这有助于某人。