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

Tìm kiếm tài liệu qua mảng số nguyên trong MongoDB

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.