我正在记录用户对我平台的每日使用情况。
mongodb中的文档结构是这样的:
_id: X
day1:{
loginCount = 4
someDict { x:y, z:m }
}
day2:{
loginCount = 5
someDict { a:b, c:d }
}
然后,我需要获取属于用户X的最后2天的用户统计信息。
我怎样才能获得天数超过两天的价值? (比如使用'$ gte'命令?)
答案 0 :(得分:3)
好的,如果你坚持这个计划,试试这个:
{
_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")
}
}
)
答案 1 :(得分:2)
除非问题有任何改变,否则我将根据此架构回答。
_id: X
day1:{
loginCount:4
someDict:{ x:y, z:m }
}
day2:{
loginCount:5
someDict:{ a:b, c:d }
}
<强>答案强>:
属于用户X的最近2天的用户统计信息。
你不能通过这种结构从像mteo这样的运营商那里得到它,因为你得到用户X查询的整天。该文件包含有关所有日期和保持动态值的信息,因为密钥在我看来一个不好的做法。您可以通过定义db.collection.find({_ id:X},{day1:1,day2:1})等字段来检索文档。
但是你必须知道密钥是什么,我不知道你如何将day1和day2保持为密钥iso日期,时间戳?根据您的持有方式,您可以通过昨天和昨天之前的日期字符串或时间戳写入查询字段,并获取所需信息。