发布
社区首页 >问答首页 >Nodejs,mongodb -对象ids或_id使用$nin或$in

Nodejs,mongodb -对象ids或_id使用$nin或$in
EN

Stack Overflow用户
提问于 2012-04-18 19:24:53
回答 2查看 8.8K关注 0票数 7

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

代码语言:javascript
代码运行次数:0
复制
Model.find({ uname : { $nin : ["sachin","saurav"] } }....

上面的词表示法线元素,如uname和其他。但是对于对象_id(_id),..

代码语言:javascript
代码运行次数:0
复制
Model.find({_id : {$nin : ["6534767457dfgbyb23","wtvwt3wy5etvdh"] } } ...

以上行未给出错误,显示正确..

代码语言:javascript
代码运行次数:0
复制
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...以某种正确格式存储在某些变量中,并必须这样做

代码语言:javascript
代码运行次数:0
复制
Model.find({_id : {$nin : variable } }

代码语言:javascript
代码运行次数:0
复制
Model.find({_id : {$nin : [variable] } }

我试过了

代码语言:javascript
代码运行次数:0
复制
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的项目。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-18 19:39:23

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

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

因此,$nin将数组视为该值,而不是您试图实现的方式。

做你想做的事情的解决方案是用这些值创建一个数组。

所以就像这样:

代码语言:javascript
代码运行次数:0
复制
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

票数 11
EN

Stack Overflow用户

发布于 2015-08-18 21:55:27

现在还不能评论,但只想在这里补充一句,new ObjectID()不适合我,但是new ObjectId() (小写d)可以。希望这对某些人有帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10208339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档