mongodb - запросить документы по значению имени поля - PullRequest
0 голосов
/ 02 января 2019

Учитывая, что у меня есть эти документы в коллекции User:

{
  userId: "user-a",
  points: {
    date: {
      1: 100,
      5: 20,
      11: 65,
    },
  },
}

{
  userId: "user-b",
  points: {
    date: {
      31: 20,
      25: 40,
      11: 15,
    },
  },
}

Что я хочу сделать, так это то, что я хочу запрашивать пользователей со значением points.date.[number] и, например, [number] <7.Как я могу это сделать? </p>

1 Ответ

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

Поскольку ваши ключи неизвестны, вы должны преобразовать их в некоторую пару ключ-значение с помощью агрегации $objectToArray, а затем легко $match с этим

db.collection.aggregate([
  { "$match": { "points.date[number]": { "$exists": true }}},
  { "$addFields": {
    "match": {
      "$objectToArray": "$points.date"
    }
  }},
  { "$match": { "match.k": { "$lt": "7" }}},
  { "$project": { "match": 0 }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...