我想根据一个特定字段找到最大连续记录数。根据Mongodb中的一个字段查找最大连续记录数
我db.people
收集查找排序基于现场后:
> db.people.find().sort({ updated_at: 1})
{ "_id" : 1, "name" : "aaa", "flag" : true, "updated_at" : ISODate("2014-02-07T08:42:48.688Z") }
{ "_id" : 2, "name" : "bbb", "flag" : false, "updated_at" : ISODate("2014-02-07T08:43:10Z") }
{ "_id" : 3, "name" : "ccc", "flag" : true, "updated_at" : ISODate("2014-02-07T08:43:40.660Z") }
{ "_id" : 4, "name" : "ddd", "flag" : true, "updated_at" : ISODate("2014-02-07T08:43:51.567Z") }
{ "_id" : 6, "name" : "fff", "flag" : false, "updated_at" : ISODate("2014-02-07T08:44:23.713Z") }
{ "_id" : 7, "name" : "ggg", "flag" : true, "updated_at" : ISODate("2014-02-07T08:44:44.639Z") }
{ "_id" : 8, "name" : "hhh", "flag" : true, "updated_at" : ISODate("2014-02-07T08:44:51.415Z") }
{ "_id" : 5, "name" : "eee", "flag" : true, "updated_at" : ISODate("2014-02-07T08:55:24.917Z") }
在上面记录,存在flag
属性值在连续的方式来true
两个地方。即
record with _id 3 - record with _id 4 (2 consecutive records)
和
record with _id 7 - record with _id 8 - record with _id 5 (3 consecutive records)
不过,我想从蒙戈查询搜索的最大连续编号。即3
。
可以得到这样的结果吗?
我把它搜索了一下,发现有一点类似的解决方法,在这里使用Map-Reduce
https://stackoverflow.com/a/7408639/1120530。
我是mongodb的新手,无法理解map-reduce
文档,特别是如何将其应用于上述场景。
你可以澄清,如果你的意思是“最连续的记录”,当按特定关键字段排序或者你在寻找插入的自然顺序时。如果人们在提问时了解你的用例,它会有所帮助。这避免了你以后说,这个回应完全不是你想要的。 –
@NeilLunn:请检查我更新的问题。 – ram
你可以用javascript表达来实现它(注意它会很慢)。据我所知,没有mongo原生查询。 –