【发布时间】:2019-12-08 21:39:43
【问题描述】:
所以我的 MonogDB 中存储了一个大型数据集,每次在我的 iTunes 库中播放一首歌曲,所以每个文档都包含艺术家姓名、歌曲名称和播放日期/时间。我目前可以使用以下查询在数据库中搜索一首歌曲的出现次数最多,这基本上给出了我播放它的总次数:
db.apple.aggregate([{ $sortByCount: "$song" }])
返回:
{ "_id" : "Fireflies (feat. Grieves)", "count" : 336 }
{ "_id" : "Cinderella (feat. Ty Dolla $ign)", "count" : 267 }
{ "_id" : "Check", "count" : 241 }
{ "_id" : "100 Grandkids", "count" : 240 }
{ "_id" : "Late For the Sky (feat. Slug & Aesop Rock)", "count" : 226 }
这将返回我在数据库中播放的 5 年歌曲中播放的总次数。我希望能够做的是创建一个查询,它返回特定年份的歌曲播放总数。我有以下查询:
db.apple.find({"playTime" : {$regex : ".*2019*"}}).pretty()
这个返回了一年内播放的所有歌曲,但我不知道如何结合这两个查询。
【问题讨论】:
-
请分享 1 或 2 个输入文档。我怀疑我们可以在处理日期时间方面做得更好。
-
日期和时间的一个例子是:{"playTime" : "2017-06-17T06:04:40.230Z"},我只需要处理年份,但我提供了播放的确切时间
-
在您的第二个查询中,您不能在
aggregate中使用$match吗?如果是这样,在aggregate中运行这两个操作...
标签: regex mongodb nosql mongodb-query