Как запросить несколько документов в mongodb с условными параметрами - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть документ с полями groupId и createdTS.и для запроса у меня есть массив объектов с groupId и lastVisit.Я хочу запросить все сообщения за groupId после lastVisit

Я пытался с $in с groupIds, но он не фильтрует createdTS с lastVisit

схема элемента

const GroupMemberSchema = new mongoose.Schema({
  userId: { type: String, required: true },
  groupId: { type: String, required: true },
  addTS: { type: Date, default: Date.now },
  lastVisit: { type: Date, default: Date.now }
});

Схема сообщений

const GroupMessageSchema = new mongoose.Schema({
  id: { type: String, required: true },
  groupId: { type: String, required: true },
  content: { type: String, required: true },
  createdTS: { type: Date, default: Date.now },
});

для запроса

GroupMessage.find({groupId: {$in: groupIds}})

1 Ответ

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

Если я правильно понял вопрос, то вам нужно выбрать записи, которые соответствуют каждому groupId и в то же время больше, чем уместное lastVisit.Если перевести его в запрос MongoDB, это будет примерно так:

{
  "$or": [
    {
      "$and": [
        { "groupId": _groupId[i] }, 
        { "createdTS": { "$gt": _lastVisit[i] } } 
      ]
    },
    ...
  ]
}

Где _groupId[i] и _lastVisit[i] - элементы массива для списка групп и отметок времени lastVisit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...