聚集
相当于SQL中的group by
db.foo.bar.aggregate()
与 find()方法功能比较接近,也是从 SequoiaDB 的集合中检索文档记录,并返回游标
命令行
按条件选择记录,并指定返回字段名
db.foo.bar.aggregate( {$match:{$and:[{no:{$gt:1002}},{no:{$lt:1015}},{dep:"计算机学院"}]}, $project:{no:1, "infoName":1, major:1} })
按条件选择记录,并对记录进行分组
db.foo.bar.aggregate( {$match:{$dep:"计算机学院"} }, {$group:{_id:"$major", Major:{$first:"$major"}, avg_age:{$avg:"$info.age"} } })
按条件选择记录,并对记录进行分组、排序、限制返回记录的起始位置和返回记录数
db.foo.bar.aggregate( {$match:{interest:{$exists:1}} }, {$group:{_id:"$major", avg_age:{$avg:"info.age"}, major:{$first:"$major"}}}, {$sort:{avg_age:-1, major:-1}}, {$skip:2}, {$limit:3})
$match:匹配查询
$and:与
$project:在其内指定返回指定的字段名,0为不返回,1返回
$first:返回第一条记录的指定字段值
$last:返回最后一条记录的指定字段值
$exists:是否存在
$skip:跳过前2条记录开始返回
$limit:限制返回记录的条数
$sort:排序后返回,1为升序,-1降序
数据的一致性检验
以上为每个参数对应的数字
分别连接到3个节点的11830数据节点中
d1 = new Sdb("node-1", 11830)
d2 = new Sdb("node-2", 11830)
d3 = new Sdb("node-3", 11830)
d1.snapshot(6, {}, {CurrentLSN:null, IsPrimary:null})
d2.snapshot(6, {}, {CurrentLSN:null, IsPrimary:null})
d3.snapshot(6, {}, {CurrentLSN:null, IsPrimary:null})
可以发现,d2的数据节点是主节点,其他是备用节点,根据offset的值对比,三个节点相同,所以数据一致
节点数据一致性检测工具
bin/sdbinspect
参数