Проблемы с запросами MongoDB - PullRequest
0 голосов
/ 16 октября 2019

Данный формат данных формата:

{
    "_id" : ObjectId("4f16fc97d1e2d32371003e27"),
    "subFolder" : "notes_inbox",
    "mailbox" : "bass-e",
    "filename" : "450.",
    "headers" : {
        "X-cc" : "",
        "From" : "michael.simmons@enron.com",
        "Subject" : "Re: Plays and other information",
        "X-Folder" : "\\Eric_Bass_Dec2000\\Notes Folders\\Notes inbox",
        "Content-Transfer-Encoding" : "7bit",
        "X-bcc" : "",
        "To" : "eric.bass@enron.com",
        "X-Origin" : "Bass-E",
        "X-FileName" : "ebass.nsf",
        "X-From" : "Michael Simmons",
        "Date" : "Tue, 14 Nov 2000 08:22:00 -0800 (PST)",
        "X-To" : "Eric Bass",
        "Message-ID" : "<6884142.1075854677416.JavaMail.evans@thyme>",
        "Content-Type" : "text/plain; charset=us-ascii",
        "Mime-Version" : "1.0"
    }
}

Что мне нужно - вывести наименьшую тему письма. Что я сделал:

db.getCollection('mails').aggregate([
{"$unwind": "$headers"},
{$group: {_id : "$_id", Subject : {$min :{$min : "$headers.Subject"}}}}
])

Вывод почти правильный, но мне нужна ТОЛЬКО одна буква с самым коротким предметом, но сейчас у меня есть несколько выходов, но мне нужен только один, самый короткий:

   {
    "_id" : ObjectId("4f16fe39d1e2d3237107e52d"),
    "Subject" : "RE: CONFIDENTIAL"
}
{
    "_id" : ObjectId("4f16fe39d1e2d3237107e52c"),
    "Subject" : "Gas Hedges"
}

Есть советы?

1 Ответ

0 голосов
/ 16 октября 2019

В следующем запросе вы получите письма с самым коротким предметом (самая короткая длина строки) ..

      $group: {
      _id: "$mailbox",
      length: {
        $min: {"lenth":{$strLenBytes:"$headers.Subject"},"sub":"$headers.Subject"}
      }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...