sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose Query:Hitta ett element i en array

Använda $ positionsoperatör kan du få resultaten. Men om du har flera element i vehicles array kommer alla att returneras i resultatet, eftersom du bara kan använda en positionsoperator i projektionen och du arbetar med 2 arrayer (en inuti en annan).

Jag skulle föreslå att du tar en titt på aggregation framework , eftersom du får mycket mer flexibilitet. Här är en exempelfråga för din fråga som körs i skalet. Jag är inte bekant med mongoose, men jag antar att detta fortfarande kommer att hjälpa dig och du skulle kunna översätta det:

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"}}
])

Det här är utdata du får:

{
        "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. Hur aktiverar man autentisering på MongoDB genom Docker?

  2. Anslutningssträng i MongoDB (med exempel)

  3. Försöker starta redis och resque schemaläggaren inom en rake-uppgift

  4. Loopback-fel:Auktorisering krävs