Mongodb создает псевдоним в запросе - PullRequest
7 голосов
/ 17 августа 2011

Что является эквивалентом mongodb для этого запроса:

ВЫБЕРИТЕ "foo" в качестве бара, id как "spec" из имени таблицы

Ответы [ 3 ]

12 голосов
/ 13 апреля 2015

Можно создать новое поле с заданным именем и значением, взятым из другого поля с помощью $ project:

{
  "_id" : 1,
  title: "abc123",
  isbn: "0001122223334",
  author: { last: "zzz", first: "aaa" },
  copies: 5
}

На следующем этапе $ project добавляются новые поля isbn, lastName и copySold:

db.books.aggregate(
   [
      {
         $project: {
            title: 1,
            isbn: {
               prefix: { $substr: [ "$isbn", 0, 3 ] },
               group: { $substr: [ "$isbn", 3, 2 ] },
               publisher: { $substr: [ "$isbn", 5, 4 ] },
               title: { $substr: [ "$isbn", 9, 3 ] },
               checkDigit: { $substr: [ "$isbn", 12, 1] }
            },
            lastName: "$author.last",
            copiesSold: "$copies"
         }
      }
   ]
)

http://docs.mongodb.org/manual/reference/operator/aggregation/project/#pipe._S_project

2 голосов
/ 06 сентября 2016

Вы можете использовать любой оператор, например toUpper или toLower или concat, или любой другой оператор, с которым, по вашему мнению, вы можете работать и создать псевдоним.

Пример: в следующем примере созданное время является полем вКоллекция.(Я плохо разбираюсь в синтаксисе, поэтому вы можете его исправить, но это подход)

{$project {
"ALIAS_one" : {"$concat" : "$created_time"},
"ALIAS_two" : {"$concat" : "$created_time"},
"ALIAS_three" : {"$concat" : "$created_time"}
}}

Таким образом, используя оператор таким образом, вы можете создать столько псевдонимов, сколько вам нужно.

0 голосов
/ 21 марта 2018

Вы можете использовать это, возможно, помочь

данные базы данных

{ "_id" : "5ab0f445edf197158835be63", "userid" : "5aaf15c28264ee17fe869ad8", "lastmodified" : ISODate("2018-03-21T07:04:41.735Z") }
{ "_id" : "5ab0f445edf197158835be64", "userid" : "5aaf15c28264ee17fe869ad8", "lastmodified" : ISODate("2018-02-20T12:31:08.896Z") }
{ "_id" : "5ab0f445edf197158835be65", "userid" : "5aaf15c28264ee17fe869ad7", "lastmodified" : ISODate("2018-02-20T02:31:08.896Z") }

команда mongo

db.zhb_test.aggregate(
[{
    $group: {
        _id: {
            $dateToString: {
                format: "%Y-%m",
                date: "$lastmodified"
            }
        },
        count: {
            $sum: 1
        }
    }
},
{
    $project: {
        "month": "$_id",
        count: 1,
        "_id": 0
    }
}])

результат

{ "count" : 2, "month" : "2018-02" }
{ "count" : 1, "month" : "2018-03" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...