我按日期提取记录说
db.Commercial_Auto.find({ "session.@Datestamp": {'$regex':'2016-05-03'}})
添加到我希望获取记录数的日期。
我们有计算的语法吗?
答案 0 :(得分:0)
首先,最好将日期存储为date
,而不是string
。 $regex
会给你带来结果,但效果不如你想象的那么高。至少应该尝试:
db.Commercial_Auto.find({ "session.@Datestamp": {'$regex':'^2016-05-03'}}) // note the ^ makes it be able to hit index if any
我建议您将字段转换为date
以供进一步使用,请尝试:
db.Commercial_Auto.find({}).forEach(function(doc) {
db.COmmercial_Auto.update({_id: doc._id}, {$set: {"session.@Datestamp", doc['session']['@Datestamp']}});
});
回到你问题count
。 find
返回一个游标,使您可以从中调用count
并获得结果:
db.Commercial_Auto.find({ "session.@Datestamp": {'$regex':'^2016-05-03'}}).count();
或者您可以使用
db.Commercial_Auto.count({ "session.@Datestamp": {'$regex':'^2016-05-03'}})
这是第一个陈述的捷径 另请注意,在分片群集中,计数可能不会给您一个准确的数字,但是粗略的数字。见document about count。