Проверка наличия значения в нескольких документах и возврат этого документа

0

Скажем, у меня есть следующие документы в коллекции MongoDB:

{
   "recipeName": "barbecued chicken",
   "author_id": "123"
}
{
   "recipeName": "grilled steak",
   "author_id": "123"
}
{
   "recipeName": "pork and beans",
   "author_id": "444"
}
{
   "recipeName": "gravy",
   "author_id": "333"
}
{
   "recipeName": "corn chowder",
   "author_id": "222"
}
{
   "recipeName": "pork roast",
   "author_id": "543"
}

Тогда у меня есть этот массив в javascript:

["grilled steak", "baked steak", "smothered steak"]

Я хочу узнать, соответствует ли какое-либо значение из моего массива рецептуName любого документа (в этом случае стейк на гриле будет соответствовать). Затем я хочу получить author_id для сопоставленного документа.

Я понимаю, что могу запросить имя рецепта для каждого элемента массива, но есть ли более эффективный способ сделать это? Этот массив может быть большим (в котором будет много запросов). Могу ли я проверить все элементы в моем массиве сразу, и если я получу совпадение, вернет мне author_id?

Это всего лишь пример, а не фактические данные: P. Спасибо заранее за любые предложения.

У меня в настоящее время это в цикле, но я ищу более эффективный способ...

   mongo.connect(uristring, function (err, db) {
      db.collection("recipes", function(err, collection) {
         if (!err) {
            collection.findOne({
               'recipeName': recipeName
            }, function (err, href) {
               if (err) {
                  return false;
               }
               if (!href) {
                  return false;
               }
               return true;
            });
         } else {
            console.log(5, 'DB error');
         }
      });
   });
Теги:
database

1 ответ

0
Лучший ответ

Вы можете использовать для этого оператор $in:

collection.findOne({
   recipeName: { $in: ["grilled steak", "baked steak", "smothered steak"] }
}, function (err, href) { ... });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню