С уважением

я есть несколько документов:

{

    "storeID" : "715R",
    "sensorID" : [ 
        "0BBA", 
        "0BB9"
    ]
}
{

    "storeID" : "312R",
    "sensorID" : [  
        "0BBB"
    ]
}

Я хочу получить результатsensorID которыйsotreID сопоставить любое значение вstoreIDarray любить['715R','312R','789R']

в этом случае я хочу получить результат:sensorID массив:[ "0BBA", "0BB9","0BBB"]

что я должен делать? Благодарю.

 str08 сент. 2017 г., 10:02
$in а затем либо использовать проекцию илиArray.prototype.map
 Markus W Mahlberg08 сент. 2017 г., 10:25
что ты уже испробовал? Отношение к пирам как к сервису кодирования, как правило, воспринимается не слишком хорошо Вы можете прочитатьКак мне задать хороший вопрос?, что увеличивает вероятность получения полезного ответакоренным образом, Вы можете найтиESRотличное эссеКак правильно задавать вопросы полезно.
 Syed Ayesha Bebe08 сент. 2017 г., 11:30
В документе, storeID которого совпадает со значением, которое мы передаем в качестве ответа, вы хотите, чтобы sensorID этого storeID. Я прав?
 Veeram08 сент. 2017 г., 15:08
Вы можете использоватьdistinct если это соответствует вашим потребностям.db.collection_name.distinct("sensorID", {storeID: {$in: ['715R','312R','789R'] }})

Ответы на вопрос(1)

Решение Вопроса

Вы должны взглянуть на$in оператор в MongoDB. Используйте его вместе с находкой, чтобы ускорить запрос, вы можете использоватьlean метод: с его помощью mongoDB будет возвращать объекты JS, а не модель / объекты Mongoose.

YourModel.find({storeID: {$in: storeIDarray }}).lean().exec(yourCallback);

Затем вы можете использоватьreduce метод в результирующем массиве:

yourResult.reduce((acc, el) => acc.concat(el.sensorID), []);

Надеюсь, это поможет,
С уважением

Ваш ответ на вопрос