面试题答案
一键面试在MongoDB中,可以使用以下代码实现上述要求:
var cursor = db.orders.find({
order_date: { $gt: new ISODate("2023-01-01") }
}, {
customer_id: 1,
total_amount: 1,
_id: 0
})
.sort({ total_amount: -1 })
.limit(10);
while (cursor.hasNext()) {
printjson(cursor.next());
}
解释:
db.orders.find
:从orders
集合中查询数据。{ order_date: { $gt: new ISODate("2023-01-01") } }
:查询条件,筛选出order_date
大于2023年1月1日的订单。{ customer_id: 1, total_amount: 1, _id: 0 }
:投影,指定返回的字段,这里只返回customer_id
和total_amount
,并排除_id
字段。.sort({ total_amount: -1 })
:按照total_amount
从高到低排序。.limit(10)
:限制每次返回10条数据。- 使用
while
循环遍历游标并打印结果。
在不同编程语言的MongoDB驱动中,语法会略有不同,但基本思路一致。例如在Python中使用pymongo
库:
from pymongo import MongoClient
client = MongoClient()
db = client.get_database()
orders = db.get_collection('orders')
cursor = orders.find({
"order_date": { "$gt": "2023-01-01" }
}, {
"customer_id": 1,
"total_amount": 1,
"_id": 0
}).sort("total_amount", -1).limit(10)
for doc in cursor:
print(doc)