MongoDB的范圍查詢是一種非常強大的功能,它允許你根據文檔字段值的范圍來檢索數據。以下是一些常見的范圍查詢實踐案例:
假設你有一個博客系統,并且想要查詢某個時間段內發布的文章數量。
db.posts.countDocuments({
createdAt: { $gte: new Date("2023-01-01"), $lte: new Date("2023-12-31") }
});
假設你有一個電商系統,并且想要查詢某個價格范圍內的商品數量。
db.products.countDocuments({
price: { $gte: 100, $lte: 500 }
});
假設你有一個社交媒體系統,并且想要查詢某個字母范圍內的用戶昵稱數量。
db.users.countDocuments({
nickname: { $regex: /^A/, $options: "i" }
});
假設你有一個地圖應用,并且想要查詢某個地理范圍內的用戶數量。
db.users.countDocuments({
location: { $geoWithin: { $box: [[-10, -10], [10, 10]] } }
});
假設你有一個電商系統,并且想要查詢某個價格范圍內且評分在某個范圍內的商品數量。
db.products.countDocuments({
price: { $gte: 100, $lte: 500 },
rating: { $gte: 4, $lte: 5 }
});
假設你有一個博客系統,并且想要查詢某個時間段內且作者為特定用戶的文章數量。
db.posts.countDocuments({
createdAt: { $gte: new Date("2023-01-01"), $lte: new Date("2023-12-31") },
author: "authorName"
});
假設你有一個電商系統,并且想要查詢某個價格范圍內的商品,并按價格排序。
db.products.find({
price: { $gte: 100, $lte: 500 }
}).sort({ price: 1 });
假設你有一個社交媒體系統,并且想要查詢某個時間段內且包含特定關鍵詞的用戶昵稱數量。
db.posts.aggregate([
{
$match: {
createdAt: { $gte: new Date("2023-01-01"), $lte: new Date("2023-12-31") }
}
},
{
$addFields: {
nickname: "$author"
}
},
{
$match: {
nickname: { $regex: "keyword", $options: "i" }
}
},
{
$group: {
_id: null,
count: { $sum: 1 }
}
}
]);
這些案例展示了MongoDB范圍查詢的多樣性和靈活性,你可以根據具體需求靈活運用這些查詢來滿足業務場景。