MongoDB найти фильтр по месяцам и годам - PullRequest
0 голосов
/ 23 января 2019

Этот запрос работает при фильтрации сообщений 12/2018 ..

db.collection.find({
  "$expr": {
    "$eq": [{ "$year": "$timestamp" }, 2018],
    "$eq": [{ "$month": "$timestamp" }, 12]
  }
});

Но если поменять местами год и месяц, вместо этого будут показаны все сообщения 2018 года.

db.collection.find({
  "$expr": {
    "$eq": [{ "$month": "$timestamp" }, 12],
    "$eq": [{ "$year": "$timestamp" }, 2018]
  }
});

Почемув том, что?Я не могу этого понять.

1 Ответ

0 голосов
/ 23 января 2019

JavaScript-объекты не могут иметь более одного ключа с одинаковым именем, но вы дважды используете здесь ключ $eq, поэтому используется только второй.

Вместо этого объедините два выражения, используя $and:

db.collection.find({
  "$expr": {
    "$and": [
      {"$eq": [{ "$year": "$timestamp" }, 2018]},
      {"$eq": [{ "$month": "$timestamp" }, 12]}
    ]
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...