【问题标题】:How To Sort This Data in MongoDB?如何在 MongoDB 中对这些数据进行排序?
【发布时间】:2014-07-14 04:56:40
【问题描述】:
/* 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",
    }]
}

这是我的数据。

我想将此数据排序为“Ts”(数据)。

我想要这样的“posts.Ts”排序列表..
名称:AAA,文本 = a3
名称:BBB,文本 = b1
名称:AAA,文本 = a2
名称:AAA,文本 = a1

但我不知道如何查询。请跟我说话

这是我在 Node 和 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"}
)}

...

【问题讨论】:

    标签: node.js mongodb mongoose aggregation-framework


    【解决方案1】:

    您的原则是正确的,但您的流水线阶段是错误的。您需要在排序之前$unwind 数组:

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

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多