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

Trong mongodb biết chỉ số của phần tử mảng khớp với toán tử $ in?

Vì vậy, giả sử chúng ta có những thứ sau trong bộ sưu tập cơ sở dữ liệu:

> db.couponmodel.find()
{ "_id" : "a" }
{ "_id" : "b" }
{ "_id" : "c" }
{ "_id" : "d" }

và chúng tôi muốn tìm kiếm các id sau trong bộ sưu tập

var coupons_ids = ["c", "a" ,"z"];

Sau đó, chúng tôi sẽ phải xây dựng trạng thái chiếu động để chúng tôi có thể chiếu các chỉ mục chính xác, vì vậy chúng tôi sẽ phải ánh xạ mỗi id với chỉ mục tương ứng của nó

var conditions = coupons_ids.map(function(value, index){
    return { $cond: { if: { $eq: ['$_id', value] }, then: index, else: -1 } };
});

Sau đó, chúng tôi có thể đưa nó vào đường dẫn tổng hợp của chúng tôi

db.couponmodel.aggregate([
    { $match : { '_id' : { $in : coupons_ids } } },
    { $project: { indexes : conditions } },
    { $project: {
        index : {
            $filter: { 
                input: "$indexes", as: "indexes", cond: { $ne: [ "$$indexes", -1 ] }
                }
            }
        } 
    },
    { $unwind: '$index' }
]);

Chạy phần trên bây giờ sẽ xuất ra từng _id và chỉ mục tương ứng của nó trong coupons_ids mảng

{ "_id" : "a", "index" : 1 }
{ "_id" : "c", "index" : 0 }

Tuy nhiên, chúng tôi cũng có thể thêm nhiều mục hơn vào đường dẫn ở cuối và tham chiếu $index để có được chỉ mục phù hợp hiện tại.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Bound Queries:Làm cách nào để chuyển đổi dặm sang radian?

  2. Cách sử dụng fetchNewObject với update.one ReactiveMongo?

  3. Bắt đầu với Node.js, angle.js và MongoDB, lập mô hình quan hệ và các mẹo tăng cường khác

  4. Cập nhật MongoDB (Chèn một danh sách các mục vào một mảng)

  5. Nhận _id của một tài liệu được chèn trong MongoDB?