2016-06-24 3 views
0

Я использую Mongoose в node.js для запроса mongoDB. Я хотел бы получить все элементы массива, которые появляются точно перед любым конкретным элементом массива. Позиция элемента неизвестна априори, иначе я бы использовал $ slice.Mongodb получить элементы внутри массива, которые появляются перед конкретным элементом

например

My database document is like this 
"user_id": "sud", "coupons": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
There are thousands of documents in my database. 

var last_element = 7; 
Now my query is 

// HERE I WANT TO FECTH [1, 2, 3, 4, 5, 6] 
// how to write this in one single query 
model.findOne({"user_id": "sud"}) 
+0

сколько документов возвращаются по Вашему запросу? Пожалуйста, см. [This] (http://stackoverflow.com/questions/37932924/how-to-solve-mongodb-related-issue-efficiently) и, пожалуйста, добавьте информацию о версии в свой qestion. Спасибо. – profesor79

+0

У меня есть relook @ profesor79, я отредактировал мой вопрос. Жду вашего ответа :) –

ответ

0

AFAIK - MongoDB запрос не способ попросить позиции элемента, который является ключевым в вашем вопросе.

Поскольку ваш результирующий набор является только одним документом - в этом случае процесс стороны приложения рекомендуется и полностью действителен.

так, используя W3School пример это будет выглядеть следующим образом:

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
var a = fruits.indexOf("Apple"); 
fruits = fruits.slice(0, a+1); 
+0

Есть много документов в моей базе данных –

+0

есть findOne() в вашем коде – profesor79

+0

yep findone потому что, поскольку user_id уникальны. –

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