node.js - 对 Mongodb 中的投影执行不同的操作
问题描述
类似于但不同于其他 SO 问题:
更新
我有一个集合,所有记录都有一个字段date
,ISODate
例如:
{
date: 12 January 2020,
event: "start",
},
{
date: 23 January 2020,
event: "stop"
},
{
date: 23 January 2020,
event: "stop",
},
{
date: 2 March 2020,
event: "pause"
}
我想找到(例如)2020 年 1 月发生任何类型事件的不同日子——比如 12 日和 23 日。
更一般地说,我想找到两个日期之间的所有不同日期(即整数)。我知道我可以做到:
db.collection('test').distinct('date', {
date: {
$gte: new Date(start),
$lte: new Date(end),
},
});
但这并没有给我一天,它给了我整个日期。另一方面,使用$dayOfMonth
with projection 很容易获得两个日期之间所有日期的非明确列表。
请帮忙!
解决方案
db.collection.aggregate([
{
"$match": {
"key": {
$gte: ISODate("2020-01-01"),
$lte: ISODate("2020-01-31")
}
}
},
{
$group: {
"_id": "$key"
}
},
{
$project: {
"day": {
$dayOfMonth: "$_id"
},
"_id": 0
}
}
])
它用于group
获取唯一值。
推荐阅读
- android - 应用 android:theme="@style/Theme.AppCompat" 时
在 AndroidManifest.xml 中删除 ActionBar - python - Python - 遍历列表中多个数据帧的每一行
- geopy - geopy 为 None 返回纬度和经度
- python - 我想从数据框中的数据列中删除数字和括号
- r - R 评估错误中的 read_csv 问题:必须命名第 1 列
- javascript - 在 javascript 中动态添加选择/选项不适用于 IE
- python - 需要帮助在 python 中绘制二维数组。我正在使用 Spyder(Python 3.6)
- scala - Scala 在 try 块中解析期货
- java - 运行 Spring Boot 应用程序时处理“地址已在使用中:绑定”的异常
- reasoning - GraphDB 非单调推理?