duanrang2627
2018-04-27 13:26
浏览 499
已采纳

如何找到不等于多个id的mongodb数据?

I have a scenario like :

I have some ids in array like : [5adcbe766803fa6b048b4599, 5adcbe766803fa6b048b4567]

$ids = [5adcbe766803fa6b048b4599, 5adcbe766803fa6b048b4567] ;

when I try to find with :

db.users.find(array('_id': array('$nin' : '$ids')));

I get some results which are not correct.

but if I use other fields like:

db.users.find(array('name': array('$nin' : 'asghar')));

Now results are correct.

图片转代码服务由CSDN问答提供 功能建议

我的场景如下:

我在数组中有一些id :[5adcbe766803fa6b048b4599,5adcbe766803fa6b048b4567]

  $ ids = [5adcbe766803fa6b048b4599,5adcbe766803fa6b048b4567]; 
   
 
 

当我尝试 find with:

  db.users.find(array('_ id':array('$ nin':'$ ids'))); 
    
 
 

我得到一些不正确的结果。

但如果我使用其他字段,如:

   db.users.find(array('name':array('$ nin':'asghar'))); 
   
 
 

现在结果是正确的 。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • duanjiao4763 2018-04-27 16:37
    已采纳

    You can not pass ids in this way.

    db.users.find(array('_id': array('$nin' : '$ids')));
    

    Here is solution:

    $idsAll = array();
    foreach ($ids as $k=>$v) {
                    $idsAll[] =  new MongoId($v);
                }
    db.users.find(array('_id': array('$nin' : $idsAll)));
    
    点赞 评论

相关推荐 更多相似问题