Javascript 使用node.js上的mongoose筛选查询结果

Javascript 使用node.js上的mongoose筛选查询结果,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在用mongoose开发一个应用程序来访问MongoDB 我试图实现的是通过id进行查询和discar一些文档 User.find({}) .where('price').lt(upperLimit) .... .exec(function(err, users) { // }); 关键是我想在执行查询之前放弃一些我知道的用户。有什么想法吗?。我不想对用户集合和过滤器进行后期处理 谢谢 您可以使用操作符: User.find({"_id":{"$

我正在用mongoose开发一个应用程序来访问MongoDB

我试图实现的是通过id进行查询和discar一些文档

User.find({})
    .where('price').lt(upperLimit)
    ....
    .exec(function(err, users) {
      //
    });
关键是我想在执行查询之前放弃一些我知道的用户。有什么想法吗?。我不想对用户集合和过滤器进行后期处理

谢谢

您可以使用操作符:

User.find({"_id":{"$ne":<IdToExclude>}}). …
User.find({“\u id”:{“$ne”:}})…
您可以使用运算符排除
\u id
值数组:

User.find({})
  .where('price').lt(upperLimit)
  .nin('_id', idsToExclude)
  ....
  .exec(function(err, users) {
    //
  });

好的,但是如果它是,一个对象数组?对于数组,可以使用操作符<代码>用户.find({“id”:{“$ne”:{“$all”:[,,…]}}})我认为JohnnyHK方法是更好的方法,但是你能告诉我们这个方法是否也有效吗?我只是自己检查了一下,它似乎不起作用,对不起!坚持JohnnyHK对数组的回答。如果可能的话,我建议不要使用$nin运算符,而是使用$ne运算符,因为$nin不能使用索引(索引只是包含的而不是独占的),从而强制对所有文档进行表扫描。@christkv实际上,
$nin
$ne
都不能有效地使用索引(请参阅),但正如@nutlike在其评论中指出的,
$ne
在本例中不起作用。只要先包含另一个查询词(在本例中为
price
),则
$nin
只需扫描具有匹配价格的文档,而不需要扫描整个集合。