sql >> Database >  >> NoSQL >> MongoDB

Mongoose Query:Zoek een element in een array

De $ gebruiken positionele operator, kunt u de resultaten krijgen. Als u echter meerdere elementen in de vehicles array ze worden allemaal geretourneerd in het resultaat, omdat je maar één positionele operator in de projectie kunt gebruiken en je werkt met 2 arrays (de ene in de andere).

Ik stel voor dat je een kijkje neemt in het aggregation framework , omdat u veel meer flexibiliteit krijgt. Hier is een voorbeeldquery voor uw vraag die in de shell wordt uitgevoerd. Ik ben niet bekend met mangoest, maar ik denk dat dit je nog steeds zal helpen en je zou het kunnen vertalen:

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

Dit is de output die je krijgt:

{
        "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. Hoe Mongodb op Apple M1-chip te installeren

  2. MongoError oplossen:kan een sessie die is beëindigd niet gebruiken

  3. hoe een hex-tekenreeks naar ObjectId in Python te converteren?

  4. MongoDB $ifNull