📜  从 ids mongoose 数组中查找项目 (1)

📅  最后修改于: 2023-12-03 14:49:17.659000             🧑  作者: Mango

从 Mongoose 中的 IDs 数组中查找项目

在 Mongoose 中,我们可以使用 findById() 方法来查找单个文档。但有时我们需要在一个数组中查找包含多个 IDs 的文档。这个过程可能需要遍历这个数组并使用 findById() 方法查找每个 ID。这在数据集很大的情况下会拖慢应用程序的速度。在本文中,我们将介绍如何使用 Mongoose 中的查询操作符 $in 来解决这个问题。

步骤 1:创建一个数组

我们使用一个数组来存储要查找的 IDs。这个数组可以包含一个或多个 ID。

const ids = [ '60c9e1938d45d35c1ba92694', '60c9e25b8d45d35c1ba92696' ];
步骤 2:使用 $in 操作符

在 Mongoose 中,我们可以使用 $in 操作符来查找包含在一个数组中的值的文档。

MyModel.find({ _id: { $in: ids } })
  .then(docs => {
    console.log(docs);
  })
  .catch(err => {
    console.log(err);
  });

注意,在这个例子中,我们给 find() 方法传递了一个对象 { _id: { $in: ids } }。在这个对象中,我们使用了 $in 操作符,它告诉 Mongoose 查找 _id 属性的值包含在 ids 数组中的文档。

步骤 3:注意事项
  1. 在将值传递给 $in 操作符时,需要使用一个数组。
  2. $in 查询操作符不仅适用于 _id 属性,还适用于任何其他属性。
完整代码示例
const mongoose = require('mongoose');

mongoose
  .connect('mongodb://localhost:27017/myapp', {
    useNewUrlParser: true,
    useUnifiedTopology: true
  })
  .then(() => console.log('Connected to MongoDB'))
  .catch(err => console.error('Could not connect to MongoDB', err));

const schema = new mongoose.Schema({ name: String });
const MyModel = mongoose.model('MyModel', schema);

const ids = [ '60c9e1938d45d35c1ba92694', '60c9e25b8d45d35c1ba92696' ];

MyModel.find({ _id: { $in: ids } })
  .then(docs => {
    console.log(docs);
  })
  .catch(err => {
    console.log(err);
  });
参考文献