📅  最后修改于: 2023-12-03 14:49:17.659000             🧑  作者: Mango
在 Mongoose 中,我们可以使用 findById()
方法来查找单个文档。但有时我们需要在一个数组中查找包含多个 IDs 的文档。这个过程可能需要遍历这个数组并使用 findById()
方法查找每个 ID。这在数据集很大的情况下会拖慢应用程序的速度。在本文中,我们将介绍如何使用 Mongoose 中的查询操作符 $in
来解决这个问题。
我们使用一个数组来存储要查找的 IDs。这个数组可以包含一个或多个 ID。
const ids = [ '60c9e1938d45d35c1ba92694', '60c9e25b8d45d35c1ba92696' ];
$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
数组中的文档。
$in
操作符时,需要使用一个数组。$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);
});