MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongoose Query:Tìm một phần tử bên trong một mảng

Sử dụng $ toán tử vị trí, bạn có thể nhận được kết quả. Tuy nhiên, nếu bạn có nhiều phần tử trong vehicles mảng tất cả chúng sẽ được trả về trong kết quả, vì bạn chỉ có thể sử dụng một toán tử vị trí trong phép chiếu và bạn đang làm việc với 2 mảng (một bên trong một mảng khác).

Tôi khuyên bạn nên xem qua aggregation framework , vì bạn sẽ linh hoạt hơn rất nhiều. Đây là một truy vấn ví dụ cho câu hỏi của bạn chạy trong shell. Tôi không quen với mongoose, nhưng tôi đoán điều này vẫn sẽ giúp ích cho bạn và bạn có thể dịch nó:

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

Đây là đầu ra bạn sẽ nhận được:

{
        "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. Các vấn đề về hiệu suất thu thập có giới hạn

  2. Hiệu suất MongoDB:Chạy các hoạt động giảm thiểu bản đồ MongoDB trên các thiết bị thứ hai

  3. mongodb không thể thực hiện giao dịch trong Go và luôn nhận Không thể tạo không gian tên trong giao dịch đa tài liệu

  4. mongodb áp dụng sắp xếp cho kết quả tra cứu

  5. Theo dõi mức sử dụng bộ nhớ MongoDB