MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoose Query:Znajdź element wewnątrz tablicy

Korzystanie z $ operator pozycyjny, możesz uzyskać wyniki. Jeśli jednak masz wiele elementów w vehicles tablica wszystkie z nich zostaną zwrócone w wyniku, ponieważ możesz użyć tylko jednego operatora pozycyjnego w rzucie i pracujesz z 2 tablicami (jedna wewnątrz drugiej).

Proponuję zapoznać się z aggregation framework , ponieważ uzyskasz znacznie większą elastyczność. Oto przykładowe zapytanie dla Twojego pytania, które działa w powłoce. Nie znam mangusty, ale myślę, że to nadal ci pomoże i będziesz w stanie to przetłumaczyć:

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

Oto wynik, który otrzymasz:

{
        "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. mangusta usuń puste obiekty lub tablice

  2. Ogranicz agregację w agregacji zgrupowanej

  3. Jak przechowywać/wyświetlać akapity za pomocą mongodb?

  4. Jak pobrać rekord z mongodb za pomocą pola _id i wyświetlić pobrany rekord w konsoli za pomocą java

  5. zaktualizuj kolumnę kolekcji w mongodb