![](/img/trans.png)
[英]select first occurrence where column value is greater than x for each A(key) | dataframe
[英]How to get documents where KEY is greater than X
我正在记录用户对我平台的日常使用情况。
mongodb中文档的结构如下:
_id: X
day1:{
loginCount = 4
someDict { x:y, z:m }
}
day2:{
loginCount = 5
someDict { a:b, c:d }
}
然后,我需要获取属于用户X的最近2天的用户统计信息。
我怎样才能获得大于两天前的值? (例如使用“ $ gte”命令?)
好的,如果您坚持使用此方案,请尝试以下操作:
{
_id: Usemongokeyhere
userid: X
days: [
{day:IsoDate(2013-08-12 00:00),
loginCount: 10,
#morestuff
},
{day:IsoDate(2013-08-13 00:00),
loginCount: 11,
#morestuff
},
]
},
#more users
然后您可以像查询:
db.items.find(
{"days.day":{$gte:ISODate("2013-08-30T00:00:00.000Z"),
$lt: ISODate("2013-08-31T00:00:00.000Z")
}
}
)
除非问题有任何变化,否则我将基于此架构进行回答。
_id: X
day1:{
loginCount:4
someDict:{ x:y, z:m }
}
day2:{
loginCount:5
someDict:{ a:b, c:d }
}
答 :
属于用户X的最近2天的用户统计信息。
使用这种结构,您无法从像$ gte这样的运算符的mongo端获得它,因为您可以获得查询用户X的整天信息。我认为文档包含有关整天信息并保留动态值作为键是我的一种不好的做法。 您可以通过定义db.collection.find({_ id:X},{day1:1,day2:1})之类的字段来检索文档
但是,您必须知道键是什么,我不确定如何将day1和day2保留为键iso日期,时间戳? 根据您持有查询的方式,您可以通过在昨天和昨天之前以日期字符串或时间戳的形式编写查询字段,以获取所需的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.