0
我有一个Chat
模型,它有一个messages
阵列,其中包含Message
s。每个Message
都有一个dateSent
属性和一个dateViewed
属性。 Message
项目是嵌入式,而不是参考。猫鼬按阵列日期排序
我如何排序Chat
S按最近不看Message
(即空dateViewed
),然后再通过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
});
上面似乎并没有工作,因为Chat
以不同的顺序出现(与没有sort()
的相同)。有什么想法吗?
编辑:建议的答案并没有帮助我,因为我不想给message
数组中Message
对象进行排序,而是在Message
对象排序Chats
从查询产生的,由他们日期持有messages
阵列。
我不知道怎么样'消息.dateViewd:-1'被解释,我会建议至少添加引号,只是为了确保一切都很好:) –
@AndreyPopov是的,我已将其更改为“{”messages.dateViewed“:-1,”messages.dateSent“:-1}',但它仍然无效... – Joum
[Mongodb:按数组对象对文档进行排序] (http://stackoverflow.com/questions/5315658/mongodb-sort-documents-by-array-objects) – TomG