MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mencantumkan pesan terakhir dari setiap percakapan, yang melibatkan pengguna, di MongoDB

Selamat datang di Stack overflow. Ini pertanyaan yang layak, Anda memposting. Tolong izinkan saya mengambil hak istimewa untuk membantu Anda semampu saya.

Ini adalah perintah agregasi yang dapat dijalankan di shell mongo. Silakan temukan penjelasannya sebaris.

db.collection.aggregate([
//match all those records which involve Wood.
{$match:{$or:[{"to":"wood"},{"from":"wood"}]}},
// sort all the messages by descending order
{$sort:{time:-1}},
{
    // Now we need to group messages together, based on the to and from field.
    // We generate a key - "last_message_between", with the value being a concatenation
    // result of the values in to and from field.
    // Now, Messages from Wood to billy and Billy to wood should be treated under a single group right.
    // To achieve that, we do a small trick to make the result contain the name coming last
    // alphabetically, first. So our key for all the Messages from Wood to Billy and Billy to Wood would be 
    // "Wood and Billy".
    // And then we just display the first document that appears in the group, that would be the 
    // latest Message.
    $group:{"_id":{
    "last_message_between":{
        $cond:[
            {
                $gt:[
                {$substr:["$to",0,1]},
                {$substr:["$from",0,1]}]
            },
            {$concat:["$to"," and ","$from"]},
            {$concat:["$from"," and ","$to"]}
        ]
    }
    },"message":{$first:"$$ROOT"}
    }
}
])

Anda dapat menjalankan di bawah ini pada luwak.

Collection.aggregate(
{$match:{$or:[{"to":"wood"},{"from":"wood"}]}},
{$sort:{time:-1}},
{
    $group:{"_id":{
    "last_message_between":{
        $cond:[
            {
                $gt:[
                {$substr:["$to",0,1]},
                {$substr:["$from",0,1]}]
            },
            {$concat:["$to"," and ","$from"]},
            {$concat:["$from"," and ","$to"]}
        ]
    }
    },"message":{$first:"$$ROOT"}
    }
},
function(err, res)
{
    if (err) return handleError(err);
    console.log(res);
}
)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 5 Cara Memasukkan Dokumen di MongoDB

  2. C# MongoDB.Driver GetServer Hilang, Apa Sekarang?

  3. MongoDB $literal

  4. Pengecualian mengautentikasi MongoCredential dan Pengecualian Mongo Db Uncategorized

  5. Permintaan tanggal dengan ISODate di mongodb sepertinya tidak berfungsi