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

Tìm tài liệu MongoDB dựa trên tổng hai trường

Sử dụng aggregation: $project tính tổng, $match lọc theo tổng.

Tạo collection

> db.searchDocumentsDemo.insertOne({ "Value1": 100, "Value2": 560 });
{ "acknowledged": true, "insertedId": ObjectId("5cd3fe1eedc6604c74817ce9") }
> db.searchDocumentsDemo.insertOne({ "Value1": 300, "Value2": 150 });
{ "acknowledged": true, "insertedId": ObjectId("5cd3fe29edc6604c74817cea") }
> db.searchDocumentsDemo.insertOne({ "Value1": 400, "Value2": 200 });
{ "acknowledged": true, "insertedId": ObjectId("5cd3fe30edc6604c74817ceb") }
> db.searchDocumentsDemo.insertOne({ "Value1": 190, "Value2": 210 });
{ "acknowledged": true, "insertedId": ObjectId("5cd3fe45edc6604c74817cec") }

Hiển thị tất cả

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

Tìm tài liệu có Value1 + Value2 < 500

> db.searchDocumentsDemo.aggregate([
    { $project: { totalValue: { $add: ["$Value1", "$Value2"] } } },
    { $match: { totalValue: { $lt: 500 } } }
]);

Kết quả (hai tài liệu có tổng 450 và 400):

{
    "_id": ObjectId("5cd3fe29edc6604c74817cea"), "totalValue": 450
}
{
    "_id": ObjectId("5cd3fe45edc6604c74817cec"), "totalValue": 400
}

Giải thích: $add tính tổng hai trường. $project tạo trường mới totalValue. $match lọc trên trường tính toán được. Có thể thêm _id: 1 trong project để giữ _id gốc.