【发布时间】:2016-03-21 17:06:24
【问题描述】:
我有一个Chat 模型,它有一个messages 数组,其中包含Messages。每个Message 都有一个dateSent 属性和一个dateViewed 属性。 Message 项目是嵌入的,而不是引用的。
如何按最近的未查看 Message(即空的dateViewed)对Chats 排序,然后按dateSent? (想想 Facebook Messenger 的行为......)
这是我迄今为止尝试过的(注意Chat 也有一个users 数组):
Chat.find({users._id: userId}).sort({messages.dateViewed: -1, messages.dateSent: -1}).exec(function(err, chats){
// handle err
// handle no docs found
// handle docs found
});
上述方法似乎不起作用,因为Chats 以不同的顺序出现(与没有sort() 相同)。有什么想法吗?
编辑:建议的答案对我没有帮助,因为我不想对 message 数组中的 Message 对象进行排序,而是对由查询,通过 Message 对象中的日期,它们保存在 messages 数组中。
【问题讨论】:
-
我不确定
messages.dateViewd: -1是如何解释的,我建议至少添加引号,以确保那里一切正常:) -
@AndreyPopov 是的,我已经把它改成了
{"messages.dateViewed": -1, "messages.dateSent": -1},但是还是不行……
标签: node.js mongodb sorting mongoose