【问题标题】:Mongoose: Find all rows without specyfic many data ( $ne )Mongoose:查找所有没有特定数据的行( $ne )
【发布时间】:2018-03-06 05:42:19
【问题描述】:

我在 mongoose 中有一个小问题,我想选择除指定 ID 之外的所有行。

以我的代码为例:

 var ids = [{id: 123},{id: 222},{id:333}];
 User.find({_id: {$ne: ids.id }},'firstName lastName _id avatar',function (err,users) {...});

确切的问题: 我有一个包含许多用户 ID 的变量,我只想选择没有这些 ID 的用户。

【问题讨论】:

  • 如果您的数组具有与集合_id 字段匹配的确切键,那么您只需使用$nor 作为var ids = [{ "_id": 123 } , { "_id": 222 } , { "_id": 333 }]; User.find({ "$nor": ids }, 'firstName lastName _id avatar', function (err, users) { ... }); 进行查询

标签: node.js mongodb express mongoose mongodb-query


【解决方案1】:

我们将使用来自 mongodb 的 $nin,从结果中排除给定数组。

我们执行映射以获得一个普通的 id 数组,例如 [123, 222, 333]

  const ids = [
    {
      id: 123,
    }, {
      id: 222,
    }, {
      id: 333,
  }];

  User.find(
   // Query
   {
     _id: {
        $nin: ids.map(x => x.id), 
     },
   },

   // Projection
   'firstName lastName _id avatar',

   // Callback
   function (err,users) {...});

【讨论】:

    猜你喜欢
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2021-08-06
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多