sql >> Databáze >  >> NoSQL >> MongoDB

Pouze dotazování vnořeného dokumentu a vracení odpovídajícího vnořeného dokumentu

$in ve vyhledávacím dotazu je navržen tak, aby vracel dokumenty spíše než dílčí dokumenty. Ve vašem případě mongoDB poskytl agregační rámec. To vám pomůže filtrovat dílčí dokumenty.

Pro mongoDB <=3.0.x

db.collection.aggregate(
  { $project: { Brand: 1}},
  { $unwind: '$Brand'},
  { $match: { "Brand.name" : { $in : ["Reebok", "Adidas"]}}},
  { $group: { _id: '$_id', Brand: {$push : '$Brand' }}}
)

Způsob MongoDB 3.2

db.collection.aggregate([
   {
      $project: {
         Brand: {
            $filter: {
               input: "$Brand",
               as: "Brand",
               cond: { "$$Brand.name": { $in : ["Reebok", "Adidas"]}}
            }
         }
      }
   }
])


  1. Agregace MongoDb pro filtrování seznamu na základě ID přítomných v objektu pole ze všech dokumentů stejné kolekce

  2. Redis SCAN odpovídající

  3. počítat mongodb v php

  4. Meteor vrací chybu neplatného hexadecimálního řetězce při pokusu o vytvoření ObjectID?