loopbackjs "inq" для массива объектов - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть массив полей объекта в модели loopback. Хочу использовать опцию «inq» для фильтрации по дням. Уже видел документы, но они предназначены для массива строк, а не для того, что я нашел.

weekDays": [
        {
          "day": "Monday",
          "startTime": "03:45",
          "endTime": "04:23"
        },
        {
          "day": "Wednesday",
          "startTime": "03:23",
          "endTime": "12:23"
        }

Синтаксис для массива строк похож на {weekDays: {inq: []}}, помогите, какая модификация должна быть сделана здесь.

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете использовать два способа в MongoDB

1.Простой find метод

db.getCollection('user').find({'weekDays.day' : {$in: ["Monday"]}})

2. При использовании агрегата

db.getCollection('user').aggregate([
        {$unwind:'$weekDays'},
        {$match : {'weekDays.day' : {$in : ['Monday']}}},
         { "$group": {
        "_id": "$id",
         "weekDays" : { "$push": "$weekDays" },
        }},
    ])

3.агрегат в loopback

var collection = ModelName.getDataSource().connector.collection("myCollection");

collection.aggregate(
  [ 
    { $unwind:'$weekDays' },
    { $match : {'weekDays.day' : {$in : ['Monday']}}},
    { "$group": { "_id": "$id", "weekDays" : { "$push": "$weekDays" }}},
  ],
  function(err, data) {
    if (err) {
    } else {
      console.lod(data)
      });
    }
  }
);
...