Bạn có thể sử dụng every () trong MongoDB cho việc này. Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -
> db.arrayConditionDemo.insertOne({"Name":"John","Marks":[40,43,45]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbdbd06de8cc557214c0e1a")
}
> db.arrayConditionDemo.insertOne({"Name":"Mike","Marks":[45]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbdbd17de8cc557214c0e1b")
}
> db.arrayConditionDemo.insertOne({"Name":"Chris","Marks":[43,45,59,69,78,89]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbdbd3cde8cc557214c0e1c")
} 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 (). Truy vấn như sau -
> db.arrayConditionDemo.find().pretty();
Điều này sẽ tạo ra kết quả sau -
{
"_id" : ObjectId("5cbdbd06de8cc557214c0e1a"),
"Name" : "John",
"Marks" : [
40,
43,
45
]
}
{
"_id" : ObjectId("5cbdbd17de8cc557214c0e1b"),
"Name" : "Mike",
"Marks" : [
45
]
}
{
"_id" : ObjectId("5cbdbd3cde8cc557214c0e1c"),
"Name" : "Chris",
"Marks" : [
43,
45,
59,
69,
78,
89
]
} Sau đây là truy vấn để khớp từng phần tử trong mảng tài liệu với một điều kiện -
> db.arrayConditionDemo.find("return this.Marks.every(function(m) { return (m >= 40 && m<= 100) })"); Điều này sẽ tạo ra kết quả sau -
{
"_id" : ObjectId("5cbdbd06de8cc557214c0e1a"),
"Name" : "John",
"Marks" : [
40,
43,
45
]
}
{
"_id" : ObjectId("5cbdbd17de8cc557214c0e1b"),
"Name" : "Mike",
"Marks" : [
45
]
}
{
"_id" : ObjectId("5cbdbd3cde8cc557214c0e1c"),
"Name" : "Chris",
"Marks" : [
43,
45,
59,
69,
78,
89
]
}