与mongodb聚合中的子字符串匹配

Sha*_*ika 4 regex mongodb

在我的mongodb系列中,我有一个time_stamp = "2013-06-30 23:58:37 928".我需要使用只有日期的" $ match ",例如time_stamp =" 2013-06-30 ".那么我怎样才能得到那样的子串呢?

以前我尝试过使用$ substr,但它显示错误"errmsg":"exception:invalid operator:$ substr"

Par*_*ade 5

我认为您尝试使用聚合框架进行查询,因为您尝试了$ match&$ substr运算符.我创建了一个简单的示例来说明如何使用$ substr来获得聚合框架所需的结果.

我已将以下数据插入MongoDB.

{ "_id" : ObjectId("528b343881d4fe2cfe0b1b25"), "time_stamp" : "2013-06-30 23:58:37 928" }
{ "_id" : ObjectId("528b343b81d4fe2cfe0b1b26"), "time_stamp" : "2013-06-30 23:58:37 928" }
{ "_id" : ObjectId("528b344c81d4fe2cfe0b1b27"), "time_stamp" : "2013-06-30 12:58:37 928" }
{ "_id" : ObjectId("528b344f81d4fe2cfe0b1b28"), "time_stamp" : "2013-06-30 12:58:23 928" }
{ "_id" : ObjectId("528b345381d4fe2cfe0b1b29"), "time_stamp" : "2013-06-31 12:58:23 928" }
{ "_id" : ObjectId("528b345981d4fe2cfe0b1b2a"), "time_stamp" : "2013-07-31 12:58:23 933" }
Run Code Online (Sandbox Code Playgroud)

我使用$ substr运算符编写了以下代码来按日期分组.

db.myObject.aggregate(
{$project : {new_time_stamp : {$substr : ["$time_stamp",0, 10]}}},
{$group:{_id:"$new_time_stamp", "count": {$sum:1}}}
);
Run Code Online (Sandbox Code Playgroud)