Computer >> Máy Tính >  >> Lập trình >> MongoDB

Truy vấn MongoDB để lấy bản ghi bắt đầu bằng phần tử cụ thể từ một mảng?

Bạn có thể sử dụng ký hiệu dấu chấm (.) Cùng với chỉ mục mảng để nhận bản ghi bắt đầu bằng phần tử cụ thể. Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

>db.arrayStartsWithElementDemo.insertOne({"PlayerName":"Chris","PlayerScore":[780,9000,456,789,987]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd29fed345990cee87fd889")
}
>db.arrayStartsWithElementDemo.insertOne({"PlayerName":"Robert","PlayerScore":[890,670,890,54646,42424]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd2a00c345990cee87fd88a")
}
>db.arrayStartsWithElementDemo.insertOne({"PlayerName":"David","PlayerScore":[909090,896555,3344433,78900]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd2a025345990cee87fd88b")
}

Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -

> db.arrayStartsWithElementDemo.find().pretty();

Điều này sẽ tạo ra kết quả sau -

{
   "_id" : ObjectId("5cd29fed345990cee87fd889"),
   "PlayerName" : "Chris",
   "PlayerScore" : [
      780,
      9000,
      456,
      789,
      987
   ]
}
{
   "_id" : ObjectId("5cd2a00c345990cee87fd88a"),
   "PlayerName" : "Robert",
   "PlayerScore" : [
      890,
      670,
      890,
      54646,
      42424
   ]
}
{
   "_id" : ObjectId("5cd2a025345990cee87fd88b"),
   "PlayerName" : "David",
   "PlayerScore" : [
      909090,
      896555,
      3344433,
      78900
   ]
}

Sau đây là truy vấn để lấy mảng bắt đầu bằng các phần tử cụ thể 890 và sau đó là 670 -

> db.arrayStartsWithElementDemo.find({"PlayerScore.0" : 890, "PlayerScore.1" : 670}).pretty();

Điều này sẽ tạo ra kết quả sau. Đây,

{
   "_id" : ObjectId("5cd2a00c345990cee87fd88a"),
   "PlayerName" : "Robert",
   "PlayerScore" : [
      890,
      670,
      890,
      54646,
      42424
   ]
}