2014-05-25 3 views
0
/* 0 */ 
{ 
    "_id" : ObjectId("5380c9e097632cee5b000007"), 
    "month" : "5", 
    "userid" : "53806aac12c75f4b51000001", 
    "__v" : 7, 
    "posts" : [{ 
     "postid" : ObjectId("538185cae0c6b8666e000008"), 
     "ts" : ISODate("2014-05-25T05:55:22.976Z"), 
     "userid" : "53806aac12c75f4b51000001", 
     "name" : "BBB", 
     "text" : "b1", 
    }] 
} 

/* 1 */ 
{ 
    "_id" : ObjectId("5380c80e97632cee5b000001"), 
    "month" : "5", 
    "userid" : "5380629ea3b31f864f000001", 
    "__v" : 24, 
    "posts" : [{ 
     "postid" : ObjectId("538185b2e0c6b8666e000004"), 
     "ts" : ISODate("2014-05-25T05:54:58.703Z"), 
     "userid" : "5380629ea3b31f864f000001", 
     "name" : "AAA", 
     "text" : "a1", 
    }, { 
     "postid" : ObjectId("538185b7e0c6b8666e000006"), 
     "ts" : ISODate("2014-05-25T05:55:03.474Z"), 
     "userid" : "5380629ea3b31f864f000001", 
     "name" : "AAA", 
     "text" : "a2", 

    }, { 
     "postid" : ObjectId("538185d6e0c6b8666e00000a"), 
     "ts" : ISODate("2014-05-25T05:55:34.231Z"), 
     "userid" : "5380629ea3b31f864f000001", 
     "name" : "AAA", 
     "text" : "a3", 
    }] 
} 

Ceci est mes DONNÉES.Comment faire pour trier ces données dans MongoDB?

Je veux trier ces données pour 'Ts' (Data).

Je veux que la liste triée par '' posts.Ts comme ça ..
nom: AAA, text =
nom a3: BBB, text = b1
nom: AAA, text = a2
nom: AAA, text = a1

mais je ne sais pas Comment demander cela. S'il vous plaît Talk To ME

Ceci est mon code dans Node et mongoose.

db.collection('walls', function(err, collection) { 

collection.find(function(err, data) { 

collection.aggregate(
{$match: {userid:userid}}, 
{$project: {posts: 1,_id:0}}, 
{$sort:{'posts.ts':1}}, 
{$unwind: "$posts"} 
)} 

...

Répondre

0

Vous êtes sur les bons principes, mais vous avez étapes pipeline dans le mauvais sens. Vous devez $unwind les tableaux avant de tri:

db.collection.aggregate([ 
    { "$match": { "userId": userId" } }, 
    { "$project": { "_id": 0, "posts": 1 } }, 
    { "$unwind": "$posts" }, 
    { "$sort": { "posts.ts": 1, "posts.name": 1 } } 
])