2014-11-11 2 views
0

У меня есть база данных, как это:MeteorJS и MongoDB: Как получить следующие 10 записей

{ 
    "_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», как я могу получить следующий 10 & предварительные просмотры 10 записей по дата, начинающаяся с "_id": "3CvrFtYo4wWE5Coj7"?

Скажите, есть ли у меня 500 записей до «_id»: «3CvrFtYo4wWE5Coj7» и 500 после.

Редактировать: Все, что я знаю, это идентификатор записи из утюга: параметр маршрутизатора «id = this.params._id» Мне нужно найти запись и получить «эту запись + следующее 10» или «эту запись + prev 10 ".

+0

вы можете использовать созданную дату документа для сортировки и подписания только первых 10 документов. Чтобы загрузить больше документов, вы можете увеличить количество лимитов подписки. Вы обычно хотите загрузить больше функциональности, не так ли? – Rajanand02

+0

@ Rajanand02 Благодарим за отзыв. Я сделал это в другом случае. Этот случай, где я показываю сообщение, говорит, что он находится посреди сообщений. Если я подпишусь на сообщения по дате, я получу первые 10 из 1000. Если это 569-й пост, как я могу получить 569 + 10? Чтобы создать список plylist со следующими 10 сообщениями. –

+0

Вы можете использовать пропуск MongoDB и предел для достижения этого. Проверьте gist https://gist.github.com/rajanand02/b8451b71c51e3618a216 – Rajanand02

ответ

1

Когда вы получаете случайный документ, почему вы не можете посмотреть его дату, а затем запросить MongoDB для следующих 10 документов, которые старше/моложе (в зависимости от того, в каком направлении вы хотите идти)?

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

Это будет означать, что вы subsribed все документы в вашей коллекции, которые, конечно, не могут быть лучше всего сделать, учитывая размер вашей коллекции. Вместо этого вы можете изменить подписку/публикацию, чтобы публиковать только нужные документы.

+0

Да, я делаю подписку/публикацию. Спасибо за ваше время. Но это дает мне ошибку: «При создании приложения: server/publications.js: 16: 31: Неожиданный токен [" Почему ti? –

+0

Я забыл: между $ и и [. Попробуйте Collection.find ({$ and: [{_ id: {$ ne: doc._id}}, {date: {$ gte: doc.date}}]}, {sort: {date: 1}, limit: 10 }) – Jamgold

+0

Спасибо, сэр, теперь он работает без ошибок. Но он ничего не возвращает. Video.find(). Fetch() return: Array [] <- Он возвращает пустой массив –

0

вы можете использовать MongoDB skip и ограничение.

// 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 
    }); 
}); 

В событиях шаблона вы можете увеличить значения переменной сеанса, чтобы получить желаемое количество сообщений.

+0

Я вижу это, но сначала. Я не хочу искать по userID. Я хочу найти запись по идентификатору документа, а затем найти следующие 10 записей, отсортированных по дате. 10 записей, которые старше, чем запись, которую я только что нашел по id. –

+0

Вы можете отправить идентификатор документа в качестве аргумента. – Rajanand02

+0

Да, но тогда он выведет только документ, соответствующий идентификатору документа. Моя борьба заключается не в том, как получить документ с документом _id, но и в том, чтобы получить следующий 10. Не зная skipCount. –

Смежные вопросы