Монго совокупная группа запросов с использованием регулярных выражений - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь написать скрипт и получить данные из коллекций, добавленных за год и конкретный месяц.

А также получите записи, где поле «Имя» соответствует моему заданному регулярному выражению.

Можно ли использовать группу регулярных выражений в совокупности? Как то так:

collection1.aggregate([
     {"$match": {"$expr":{"$and":[{"$eq":[{"$year":"$updated_time"}, year]}, {"$eq":[{"$month":"$updated_time"}, month]}]}}},
{$group : {_id : {"Name": {"$regex": '^ABC', "$options": "i"} },count: { $sum: 1 }}
}]

Или какой самый лучший способ получить это? Как я могу изменить этот запрос, чтобы получить количество совпадений регулярных выражений в этот период времени

1 Ответ

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

Вы можете использовать $regex внутри самого $match, а затем использовать $count, чтобы получить номер совпадающего документа

collection1.aggregate([
  { "$match": {
    "$expr": {
      "$and": [
        { "$eq": [{ "$year": "$updated_time" }, year] },
        { "$eq": [{ "$month": "$updated_time" }, month] }
      ]
    },
    "Name": { "$regex": "^ABC", "$options": "i" }
  }},
  { "$count": "count" }
])

или либо $group, а также

collection1.aggregate([
  { "$match": {
    "$expr": {
      "$and": [
        { "$eq": [{ "$year": "$updated_time" }, year] },
        { "$eq": [{ "$month": "$updated_time" }, month] }
      ]
    },
    "Name": { "$regex": "^ABC", "$options": "i" }
  }},
  { "$group": {
    "_id": null,
    "count": { "$sum": 1 }
  }}
])
...