猫鼬-查找包含ObjectID数组的文件中的字符串数组

时间:2019-06-09 08:16:21

标签: node.js mongodb express mongoose

我有一个模型,该模型存储另一个模型的对象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);

我得到了模型中的所有香料。.不仅仅是具有这两种混合物的香料。

1 个答案:

答案 0 :(得分:1)

使用$all

spicesQuery.where({blends: {$all: query.blends}});
const spices = await spicesQuery.sort({name: 1}).exec();