我有一个模型,该模型存储另一个模型的对象ID。现在,我需要在包含特定ID的模型中找到另一个模型。
我的架构是: 我有一个包含对象ID的字段的模型。喜欢..
const SpiceSchema = new mongoose.Schema({
createdat: {
type: Date,
required: true,
default: Date.now,
},
name: {
type: String,
required: true,
},
image: {
type: String,
},
description: {
type: String,
},
blends: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'blend',
}],
flavors: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'flavor',
}],
ingredients: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'ingredient',
}],
regions: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'region',
}],
});
现在文档看起来像这样。
{ blends: [ 5cf296751771e6157cc2b257, 5cf296f1c61d6739b0903ef5 ],
flavors: [ 5cf2b268acac9e261459ea3a ],
ingredients: [ 5cf2b281acac9e261459ea3b ],
regions: [],
_id: 5cf4162d95aa7d28e0c4e324,
name: 'themeal',
description: 'sldkjf ldskjflksdj f\r\nlorem salute saloni',
createdat: 2019-06-02T18:32:13.270Z,
__v: 0,
image: '5cf4162d95aa7d28e0c4e324.jpg' } ]
我有从前端来的一系列混合。
query.blends: [ '5cf2956b1771e6157cc2b256', '5cf296751771e6157cc2b257' ]
我需要在包含这两种混合的香料架构中找到所有文档。
目前,我正在尝试通过以下方式实现这一目标:
const spicesQuery = Spice.find();
spicesQuery.where({blends: {$in: query.blends}});
const spices = spicesQuery.sort({name: 1}).exec();
console.log(spices);
我得到了模型中的所有香料。.不仅仅是具有这两种混合物的香料。
答案 0 :(得分:1)
使用$all
spicesQuery.where({blends: {$all: query.blends}});
const spices = await spicesQuery.sort({name: 1}).exec();