MeteorJS&MongoDB:如何获得接下来的10个条目

MeteorJS & MongoDB: How to get next 10 entries

本文关键字:接下来 10个 何获得 amp MongoDB MeteorJS      更新时间:2023-09-26

我有一个这样的数据库:

{
    "_id" : "xFZtChfKTf3GLxFEg",
    "category" : "pranks",
    "date" :new Date(),
    "rate" : {
    "up" : 0,
        "down" : 0
},
    "user" : "User_1",
    "vTitle" : "Kissing Prank - How to Kiss ANY Girl in 10 SECONDS - Kissing Strangers/Funny Videos/Best Pranks 2014",
    "v_id" : "Fa1agPyuRRM",
    "views" : 0
},
{
    "_id" : "RB2uwCfsjujFwFpZe",
    "category" : "pranks",
    "date" :new Date(),
    "rate" : {
    "up" : 0,
        "down" : 0
},
    "user" : "User_1",
    "vTitle" : "Dropping Guns in the Hood (PRANKS GONE WRONG) - Pranks in the Hood - Funny Videos - Best Pranks 2014",
    "v_id" : "K1SksoAHIa0",
    "views" : 0
},
{
    "_id" : "3CvrFtYo4wWE5Coj7",
    "category" : "pranks",
    "date" :new Date(),
    "rate" : {
    "up" : 0,
        "down" : 0
},
    "user" : "User_1",
    "vTitle" : "TOP Pranks 2014 - Pranks in the Hood - Pranks Gone Wrong - Funny Pranks 2014 - PRANK COMPILATION",
    "v_id" : "oEgXOhxXvsc",
    "views" : 0
},
{
    "_id" : "doiA7EPkwCe5meyJ7",
    "category" : "pranks",
    "date" :new Date(),
    "rate" : {
    "up" : 0,
        "down" : 0
},
    "user" : "User_1",
    "vTitle" : "Top 5 Pranks of 2014",
    "v_id" : "A9w72vSuPAQ",
    "views" : 0
},
{
    "_id" : "8oK2JxqJfEkzceWHB",
    "category" : "pranks",
    "date" :new Date(),
    "rate" : {
    "up" : 0,
        "down" : 0
},
    "user" : "User_1",
    "vTitle" : "Friday The 13th Scare Prank",
    "v_id" : "6m4isWlUlRE",
    "views" : 0
},
{
    "_id" : "5NwM2fbnifKejgSct",
    "category" : "pranks",
    "date" :new Date(),
    "rate" : {
    "up" : 0,
        "down" : 0
},
    "user" : "User_1",
    "vTitle" : "7 SUPER EASY PRANKS - HOW TO PRANK",
    "v_id" : "RckNziU2JEk",
    "views" : 0
},
{
    "_id" : "x5QqJu2e54kjFpfkz",
    "category" : "pranks",
    "date" :new Date(),
    "rate" : {
    "up" : 0,
        "down" : 0
},
    "user" : "User_1",
    "vTitle" : "Orphanage Robbery Prank!!",
    "v_id" : "dBfVwjRuwxk",
    "views" : 0
},

如果我有一个"_id":"3CvrFtYo4wWE5Co7",我如何获得下一个10&按日期从"_id"开始预览10个条目:"3CvrFtYo4wWE5Coj7"?

假设"_id"之前有500个条目:"3CvrFtYo4wWE5Coj7",之后有500个。

编辑:我所知道的只是iron:router参数"ID=this.params._ID"中的条目ID,然后我必须找到该条目,并获得"that entry+next 10"或"that entry+prev 10"。

当你得到一个随机的文档时,为什么不能查看它的日期,然后在MongoDB中查询下10个较老/较年轻的文档(取决于你想去哪个方向)?

Collection.find({$and[{date:{$gte:{mydocument.date}}},{_id:{$ne:mydocument._id}}]},{sort:{date:1}}).limit(10)

这意味着你订阅了你收藏的所有文档,当然,考虑到你收藏的规模,这可能不是最好的做法。相反,您可能希望将订阅/发布更改为仅发布您实际需要的文档。

您可以使用MongoDB跳过和限制。

// Set some default value for the session variables
Session.setDefault("limitCount",10);
Session.setDefault("skipCount",0);
// subscribe to the post in client-side using the session variables.
Tracker.autorun(function () {
  Meteor.subscribe("posts", Session.get("limitCount"),Session.get("skipCount"));
});
// Publish using the limit and skip values.
Meteor.publish("posts",function (limitCount,skipCount) {
  return Posts.find({user_id: this.userId},{
    sort: {date: -1},
    limit: limitCount,skip: skipCount
  });
});

在模板事件中,可以增加Session变量值以获得所需的帖子数量。