Mongoose - Найти массив строк внутри поля с массивом ObjectID - PullRequest
0 голосов
/ 09 июня 2019

У меня есть модель, в которой хранятся идентификаторы объектов из другой модели. Теперь мне нужно найти внутри этой модели, которая содержит конкретные идентификаторы, другую модель.

Моя схема: У меня есть модель с полем, содержащим идентификаторы объектов. как ..

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 Ответ

1 голос
/ 09 июня 2019

использование $all

spicesQuery.where({blends: {$all: query.blends}});
const spices = await spicesQuery.sort({name: 1}).exec();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...