Ватерлиния, найти массив в массиве

У меня есть модель видео:

module.exports = {

  attributes: {
    id: 'string',
    tags: 'array'
  },
}

Я хочу найти все видео с тегами, например, «Привет» или «Мир». Я мог легко получить все видео, например: Video.find({tags:"Hello"}). Я видел примеры, когда поиск id: [1,2,3], но не когда ключ (id => теги) является массивом.


person vromanch    schedule 11.06.2014    source источник
comment
вам не хватает} в вашем коде?   -  person theonlygusti    schedule 11.06.2014
comment
я обновил всю модель без таких функций, как (beforeCreate и т. д.)   -  person vromanch    schedule 11.06.2014
comment
Посмотрите этот ответ stackoverflow.com/questions/19110553/sails -монго-найти-в-массиве   -  person kidwon    schedule 11.06.2014
comment
Вероятно, это тоже помогает stackoverflow. ком/вопросы/22708069/   -  person kidwon    schedule 11.06.2014


Ответы (3)


Используйте оператор "in" в сочетании с оператором "содержит"

Video.find({tags: { contains: ["some1","some2"]}}).exec(function(err,res){
    console.log(res);
});

См.: https://github.com/balderdashy/waterline-docs/blob/master/queries/query-language.md

person mdunisch    schedule 12.06.2014
comment
Правда, это не работает. Есть идеи, как это решить? @harianus ты решил это? - person Suisse; 23.01.2018
comment
@Suisse: возможно, но это было в 2015 году, и я больше не использую Sails. - person adriaan; 25.01.2018

попробуй это:

Video.find({tags: {"$in" : ["sometag1", "sometag2"]}})
person vromanch    schedule 11.06.2014
comment
Это при использовании оболочки mongodb, здесь он использует Waterline. - person Julien Fouilhé; 11.06.2014

Может быть, это..

var filtered = module.exports.filter(function () {
    return this.tags.indexOf("string") != -1
});
person Erik Simonic    schedule 11.06.2014