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

Nhận toàn bộ mảng bằng một trong các chuỗi của nó. Mảng nằm bên trong một mảng khác. Mongodb / Javascript

Sử dụng truy vấn tổng hợp:

  • $match điều kiện, đặt $ememMatch lồng nhau cho điều kiện cấp độ 2
  • $reduce để lặp lại vòng lặp của mảng vid, đặt ban đầu [], kiểm tra điều kiện nếu chuỗi trong mảng hiện tại thì trả về mảng hiện tại, nếu không thì trả về giá trị ban đầu
let searchString = "adfsdfasfd";
db.collection.aggregate([
  {
    $match: {
      vid: { $elemMatch: { $elemMatch: { $in: [searchString] } } }
    }
  },
  {
    $addFields: {
      vid: {
        $reduce: {
          input: "$vid",
          initialValue: [],
          in: {
            $cond: [{ $in: [searchString, "$$this"] }, "$$this", "$$value"]
          }
        }
      }
    }
  }
])

Sân chơi

Kết quả:

[
  {
    "vid": [
      "adfsdfasfd",
      "this is some sample text",
      "https://example.com"
    ]
  }
]

Sử dụng truy vấn tìm:

  • Đặt điều kiện đối sánh giống như trên
  • đối với phép chiếu nhận được kết quả so khớp nhưng trong cùng một mảng lồng nhau
let searchString = "adfsdfasfd";
db.collection.find(
  { vid: { $elemMatch: { $elemMatch: { $in: [searchString] } } } }
).project({ "vid.$": 1, _id: 0 }).toArray()

Sân chơi

Kết quả:

[
  {
    "vid": [
      [
        "adfsdfasfd",
        "this is some sample text",
        "https://example.com"
      ]
    ]
  }
]



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoid:sử dụng nhiều hơn một cơ sở dữ liệu?

  2. mongodb cập nhật tất cả tài liệu với việc tăng giá trị lên 1

  3. Không thể kết nối Robomongo bằng hình ảnh docker MongoDB

  4. Cập nhật mongodb mảng lồng nhau kép

  5. Làm cách nào để truy xuất một tập hợp con các trường bằng trình điều khiển C # MongoDB?