Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tìm chỉ số (index) của giá trị mảng trong mảng khác MongoDB

Sử dụng $indexOfArray trong aggregation để tìm vị trí của từng giá trị từ mảng tham chiếu trong mảng đích.

Tạo collection:

> db.demo381.insertOne({"Values":[10,40,60,30,60]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b59f72ae06a1609a00b15") }
> db.demo381.insertOne({"Values":[100,500,700,500,800]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b59f72ae06a1609a00b16") }
> db.demo381.insertOne({"Values":[20,40,30,10,60]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b59f72ae06a1609a00b17") }

Xem dữ liệu:

> db.demo381.find();

Aggregation tìm index của [10, 40] trong từng mảng Values:

> db.demo381.aggregate([
  {"$project":{
    "Result":{
      "$map":{
        "input":[10,40],
        "in":{"$indexOfArray":["$Values","$$this"]}
      }
    }
  }}
])

Kết quả:

Giải thích:

  • $map: lặp qua mảng tham chiếu [10, 40]
  • $indexOfArray: tìm vị trí đầu tiên của $$this trong $Values
  • Trả về -1 nếu không tìm thấy
  • Chỉ trả về index **đầu tiên** (không phải tất cả vị trí)

Doc 1: 10 ở index 0, 40 ở index 1 → [0,1] Doc 2: không có 10, 40 → [-1,-1] Doc 3: 10 ở index 3, 40 ở index 1 → [3,1]