0

我有这个猫鼬模式:

UserSchema = new db.Schema({
        objA                : [objA.Schema],
        objB                : [objB.Schema],
        objC                : [objC.Schema],
        objD                : [objD.Schema],
        friends             : [db.Schema.Types.ObjectId]
}

我使用此查询根据对象的内容获取_ids 内部:objA, objB, objC and objDfriends

user.Model
        .find({
            _id : {
                $in : friends
            }
        })
        .select('-_id objA._id objB._id objC._id objD._id') //get the _ids
        .exec(function(err, results) {
            console.log(results);
        });

results节目:

[ { objD: [ { _id: 52395c8cee93d72344000009 } ],
    objC: [],
    objA: 
     [ { _id: 52395a408078b3f42200000d },
       { _id: 52395cc1ee93d7234400000c } ],
    objB: [ { _id: 52395d06ee93d7234400000f } ] },

  { objD: [],
    objC: [],
    objA: [ { _id: 52395a248078b3f422000009 } ],
    objB: [] } ]

一切都按预期正常工作。但我的目标是将 objA、B、C 和 D 的所有 _id 放在一个容器中(可能是一个数组、对象......我不知道),在其中我可以轻松地按时间戳对它们进行排序并用它们填充 UI。我认为有一个非常方便的方法。有任何想法吗?TIA

4

1 回答 1

1

MongoDB 在其查询中提供了内置的 sort() 选项,您可以通过 Mongoose 轻松使用此功能。使用 Mongoose 时,您还可以多次迭代返回的对象(与游标不同,游标在迭代后会耗尽)。因此,您可以简单地让查询以时间戳排序的顺序返回您的文档,方法是在查询中包含“排序”选项,如下所示:

var query = myModel.find({}, null, { sort : { timestamp : 1 }});
于 2013-09-18T18:00:42.233 回答