对于Mongodb / Mongoose / Node来说是新的。尝试进行查询以检索集合中所有文档中的最新帖子(例如10个最新帖子)。
我尝试了几种不同的查询方式。
MessageboardModel.find({"posts": {"time": {"$gte": ISODate("2014-07-02T00:00:00Z")}}} ...
我尝试执行上述操作只是为了尝试获取适当的嵌套时间属性,但是我尝试执行的所有操作均会引发错误。我肯定在这里想念什么...
以下是集合中的示例文档:
{
"_id": {
"$oid": "5c435d493dcf9281500cd177"
},
"movie": 433249,
"posts": [
{
"replies": [],
"_id": {
"$oid": "5c435d493dcf9281500cd142"
},
"username": "Username1",
"time": {
"$date": "2019-01-19T17:24:25.204Z"
},
"post": "This is a post title",
"content": "Content here."
},
{
"replies": [],
"_id": {
"$oid": "5c435d493dcf9281500cd123"
},
"username": "Username2",
"time": {
"$date": "2019-01-12T17:24:25.204Z"
},
"post": "This is another post made earlier",
"content": "Content here."
}
],
"__v": 0
}
集合中有很多文档。我想在整个馆藏的所有文档中得到最近的10篇帖子。
有帮助吗?
答案 0 :(得分:0)
您可以尝试使用aggregation查询:
步骤: 1>匹配特定文档
2>使用$unwind
拉伸其数组的文档。
3>使用time
中的posts
字段进行排序。
4>如果需要显示特定字段,请选择字段。
5>添加限制,需要多少文档。
<YOUR_MODEL>.aggregate([
{$match:{
"movie": 433249 //you may add find conditions here, otherwise you can keep {} or remove $match from here
}},
{$unwind:"$posts"}, //this will make the each array element with different different docs.
{$sort:{"posts. time":1}}, // sort using the date field now, depends on your requirement use -1 /1
{$project:{posts:1}}, //select docs only from posts field. [u can remove if you want every element, or may modify]
{$limit:10} //you want only last 10 posts
]).exec();
让我知道您是否仍然有任何问题或遇到任何错误。
会很喜欢答案