MongoDB查询问题

时间:2019-10-16 08:29:29

标签: mongodb mongodb-query

给出格式数据集:

{
    "_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 :(得分:0)

以下查询将为您提供主题最短(字符串长度最短)的字母。

      $group: {
      _id: "$mailbox",
      length: {
        $min: {"lenth":{$strLenBytes:"$headers.Subject"},"sub":"$headers.Subject"}
      }
     }