MongoDB обновление, где несколько условий совпадают - PullRequest
0 голосов
/ 27 августа 2018

У меня есть следующий документ mongoDB:

        {
        "_id" : "5b76c3c037548390fdb5b40e",
        "userId" : "4601",
        "news" : [
            {
                "newsId" : "1",
                "progress" : "0",
            },
            {
                "newsId" : "2",
                "progress" : "100",
            },
            {
                "newsId" : "3",
                "progress" : "45",
            },
        ],
        "modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
        "created" : ISODate("2018-08-21T19:13:43.301+05:30"),
        "completionStatus" : "0",
    },
    {
        "_id" : "5b76c3c037548390fdb5b40e",
        "userId" : "1234",
        "news" : [
            {
                "newsId" : "2",
                "progress" : "100",
            },
            {
                "newsId" : "3",
                "progress" : "100",
            },
        ],
        "modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
        "created" : ISODate("2018-08-21T19:13:43.301+05:30"),
        "completionStatus" : "0",
    }

Массив новостей может содержать n чисел JSON.для одного пользователя количество в этом массиве равно 3, для другого - 2.

Теперь я хочу обновить завершающий статус до 1, основываясь на следующих условиях:

Условие 1: изменено дата документа сегодня.ключ уже изменен .

Условие 2: прогресс каждого элемента массива новостей равен 100.

1 Ответ

0 голосов
/ 27 августа 2018

Это должно работать:

collection.update({
  modified: {
    $gte: startOfDay,
    $lte: endOfDay
  },
  news: {
    $not: {
      $elemMatch: {
        progress: {
          $ne: "100"
        }
      }
    }
  }
}, {
  $set: {
    completionStatus: "1"
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...