MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose Query:Намерете елемент в масив

Използване на $ позиционен оператор, можете да получите резултатите. Ако обаче имате няколко елемента в vehicles всички те ще бъдат върнати в резултата, тъй като можете да използвате само един позиционен оператор в проекцията и работите с 2 масива (един в друг).

Предлагам ви да разгледате aggregation framework , тъй като ще получите много повече гъвкавост. Ето примерна заявка за вашия въпрос, която се изпълнява в обвивката. Не съм запознат с mongoose, но предполагам, че това ще ви помогне и ще можете да го преведете:

db.collection.aggregate([
    // Get only the documents where "email" equals "[email protected]" -- REPLACE with params.username
    {"$match" : {email : "[email protected]"}}, 
    // Unwind the "inventories" array
    {"$unwind" : "$inventories"}, 
    // Get only elements where "inventories.title" equals "activeInventory"
    {"$match" : {"inventories.title":"activeInventory"}}, 
    // Unwind the "vehicles" array
    {"$unwind" : "$inventories.vehicles"}, 
    // Filter by vehicle ID -- REPLACE with vehicleID 
    {"$match" : {"inventories.vehicles._id":ObjectId("53440e94c02b3cae81eb0069")}}, 
    // Tidy up the output
    {"$project" : {_id:0, vehicle:"$inventories.vehicles"}}
])

Това е резултатът, който ще получите:

{
        "result" : [
                {
                        "vehicle" : {
                                "_id" : ObjectId("53440e94c02b3cae81eb0069"),
                                "tags" : [
                                        "vehicle"
                                ],
                                "details" : [
                                        {
                                                "_id" : ObjectId("53440e94c02b3cae81eb0066"),
                                                "year" : 2007,
                                                "transmission" : "Manual",
                                                "price" : 1000,
                                                "model" : "Firecar",
                                                "mileageReading" : 50000,
                                                "make" : "Bentley",
                                                "interiorColor" : "blue",
                                                "history" : "CarProof",
                                                "exteriorColor" : "blue",
                                                "driveTrain" : "SWD",
                                                "description" : "test vehicle",
                                                "cylinders" : 4,
                                                "mileageType" : "kms"
                                        }
                                ]
                        }
                }
        ],
        "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Съпоставяне на BsonArray към List<> в POCO

  2. Laravel - Mongodb [ jenssegers/laravel-mongodb ] - Конструктор на схеми

  3. Как да актуализирам, ако съществува, в противен случай вмъкнете нов документ?

  4. Променете реда, в който свойствата се показват в MongoDB

  5. $concat две полета в mongodb