MongoDB递归、聚合、嵌套测试
1.递归测试
测试目标:递归查询某个用户的全部子用户。
测试环境:MongoDB 3.2.0
插入测试数据
db.categories.insert({_id: "MongoDB", parent: "Databases" } )
db.categories.insert({_id: "dbm", parent: "Databases" } )
db.categories.insert({_id: "Databases", parent: "Programming" } )
db.categories.insert({_id: "Languages", parent: "Programming" } )
db.categories.insert( { _id: "Programming", parent: "Books" } )
db.categories.insert( { _id: "Books", parent: null } )
读取Programming的后代
function findChildren(parent) {
var myCursor = db.categories.find({"parent":parent});
while(myCursor.hasNext()) {
var myJsonString = tojson(myCursor.next());
print(myJsonString);
var myJsonObject = JSON.parse(myJsonString);
findChildren(myJsonObject._id);
}
}
findChildren("Programming");
2.聚合测试
给定统计周期和设备列表,对设备数据进行统计。
db.car.insert({deviceId:'111111',fuelConsum:5,mileage:1000,createTime:"2011-10-29 0:0:1"})
db.car.insert({deviceId:'222222',fuelConsum:6,mileage:2000,createTime:"2012-10-29 0:0:1"})
db.car.insert({deviceId:'333333',fuelConsum:7,mileage:3000,createTime:"2013-10-29 0:0:1"})
db.car.insert({deviceId:'444444',fuelConsum:8,mileage:4000,createTime:"2014-10-29 0:0:1"})
db.car.insert({deviceId:'555555',fuelConsum:9,mileage:5000,createTime:"2015-10-29 0:0:1"})
db.car.insert({deviceId:'666666',fuelConsum:10,mileage:6000,createTime:"2016-10-29 0:0:1"})
统计平均油耗
统计周期:2012-2016年
统计设备列表:[“111111”, “222222”, “333333”, “444444”, “555555”]
var deviceList = ["111111","222222","333333", "444444", "555555"];
db.car.aggregate([
{$match:{"$and":[
{"createTime":{"$gt":"2012-1-1 0:0:0"}},
{"createTime":{"$lt":"2016-12-31 0:0:0"}},
{"deviceId":{$in:deviceList}}]}},
{$group:{_id:null,avg_fuel:{$avg:"$fuelConsum"}}}
])