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

Mongoose Query:Najděte prvek uvnitř pole

Pomocí $ poziční operátor, můžete získat výsledky. Pokud však máte ve vehicles více prvků pole všechny budou ve výsledku vráceny, protože v projekci můžete použít pouze jeden poziční operátor a pracujete se 2 poli (jedno uvnitř druhého).

Navrhoval bych, abyste se podívali na aggregation framework , protože získáte mnohem větší flexibilitu. Zde je příklad dotazu pro vaši otázku, který běží v shellu. V mangustách se nevyznám, ale myslím, že vám to stále pomůže a mohli byste to přeložit:

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

Toto je výstup, který získáte:

{
        "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. Mongo ekvivalent SQL SELECT DISTINCT?

  2. Jak najít součet hodnot, které jsou uvnitř vnořeného pole pomocí agregace mongodb?

  3. Vložení nového dokumentu pomocí InsertOneAsync (.NET Driver 2.0)

  4. Instalace a používání MongoDB v Grails 3.x