Sử dụng toán tử $where hoặc truy vấn trực tiếp mảng. Tạo collection:
> db.searchDocumentArrayIntegerDemo.insertOne({"StudentFirstName":"John","StudentScores":[45,78,89,90]});
{ "acknowledged": true, "insertedId": ObjectId("5cd2a219345990cee87fd88c") }
> db.searchDocumentArrayIntegerDemo.insertOne({"StudentFirstName":"Larry","StudentScores":[45,43,34,33]});
{ "acknowledged": true, "insertedId": ObjectId("5cd2a22a345990cee87fd88d") }
> db.searchDocumentArrayIntegerDemo.insertOne({"StudentFirstName":"Chris","StudentScores":[]});
{ "acknowledged": true, "insertedId": ObjectId("5cd2a23c345990cee87fd88e") }
> db.searchDocumentArrayIntegerDemo.insertOne({"StudentFirstName":"David","StudentScores":[99]});
{ "acknowledged": true, "insertedId": ObjectId("5cd2a24d345990cee87fd88f") }
Hiển thị tất cả
> db.searchDocumentArrayIntegerDemo.find().pretty();
Trường hợp 1: Mảng có ít nhất 1 phần tử
> db.searchDocumentArrayIntegerDemo.find({ $where: "this.StudentScores.length >= 1" } );
Kết quả (loại bỏ mảng rỗng của Chris):
{
"_id": ObjectId("5cd2a219345990cee87fd88c"),
"StudentFirstName": "John",
"StudentScores": [45, 78, 89, 90]
}
{
"_id": ObjectId("5cd2a22a345990cee87fd88d"),
"StudentFirstName": "Larry",
"StudentScores": [45, 43, 34, 33]
}
{
"_id": ObjectId("5cd2a24d345990cee87fd88f"),
"StudentFirstName": "David",
"StudentScores": [99]
}
Trường hợp 2: Mảng chứa giá trị chung (45)
> db.searchDocumentArrayIntegerDemo.find({StudentScores: 45}, {StudentScores:1});
Kết quả (chỉ John và Larry có 45 trong mảng):
{
"_id": ObjectId("5cd2a219345990cee87fd88c"),
"StudentScores": [45, 78, 89, 90]
}
{
"_id": ObjectId("5cd2a22a345990cee87fd88d"),
"StudentScores": [45, 43, 34, 33]
}
Khuyên dùng: Thay vì $where (chậm, không dùng index), hãy dùng { StudentScores: { $exists: true, $ne: [] } } hoặc { StudentScores.0: { $exists: true } } để kiểm tra mảng không rỗng.