如何获取KEY大于X的文档

时间:2013-09-04 15:05:16

标签: python mongodb

我正在记录用户对我平台的每日使用情况。

mongodb中的文档结构是这样的:

_id: X
day1:{
    loginCount = 4
    someDict { x:y, z:m }
    }
day2:{
    loginCount = 5
    someDict { a:b, c:d }
    } 

然后,我需要获取属于用户X的最后2天的用户统计信息。

我怎样才能获得天数超过两天的价值? (比如使用'$ gte'命令?)

2 个答案:

答案 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日期,时间戳?根据您的持有方式,您可以通过昨天和昨天之前的日期字符串或时间戳写入查询字段,并获取所需信息。