0

我有一个这样的数据库:

{
    "_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”:“3CvrFtYo4wWE5Coj7”,我怎样才能从“_id”:“3CvrFtYo4wWE5Coj7”开始按日期获取下一个 10 和预览 10 个条目?

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

编辑:我只知道来自 Iron:router 参数“id = this.params._id”的条目 ID,然后我必须找到该条目并获取“那个条目 + 下一个 10”或“那个条目 + 上一个 10”。

4

2 回答 2

1

当你得到一个随机文档时,为什么不能查看它的日期,然后查询 MongoDB 以获取接下来的 10 个更旧/更年轻的文档(取决于你想往哪个方向走)?

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

这意味着您订阅了集合中的所有文档,考虑到集合的大小,这当然可能不是最好的选择。相反,您可能希望将订阅/发布更改为仅发布您真正想要的文档。

于 2014-11-11T16:27:42.430 回答
0

您可以使用 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 变量值以获得所需的帖子数。

于 2014-11-11T12:52:01.933 回答