mongodb - MongoDB $merge 存储相同 slug 的多条记录
问题描述
我编写了一个聚合查询,其中我将数据存储到另一个名为 demoDaily 的集合中。但是 $merge 会产生相同 slug 的多条记录。相反,我只想要所有蛞蝓的单一记录。
这是我的查询:
const dummy = await demoHourly.aggregate([
{
$match:{
lastUpdated: {
$gte: new Date(finalDate)
}
}
},
{
$sort: {
"lastUpdated": 1,
"slug": 1
}
},
// { $limit : 100 },
{
$group: {
_id: "$slug",
avgPriceUsd: {
$avg: "$priceUsd"
},
avgPriceBtc: {
$avg: "$priceBtc"
},
high: {
$max: "$priceUsd"
},
low: {
$min: "$priceUsd"
},
volumeUsd24h: {
$avg: "$volumeUsd24h"
},
marketcapUsd: {
$avg: "$marketcapUsd"
},
open: {
$first: "$priceUsd"
},
close: {
$last: "$priceUsd"
},
}
},
{
"$project": {
"_id": 0,
"slug": "$_id",
"avgPriceUsd": 1,
"avgPriceBtc": 1,
"volumeUsd24h": 1,
"marketcapUsd": 1,
"high": 1,
"low": 1,
"open": 1,
"close": 1,
"lastUpdated": new Date(finalDate)
}
},
{
$merge:{
"into": "demoDaily",
on: "_id",
whenMatched: "replace",
}
},
], (err, result) => {
if (err) {
console.log(err);
} else {
console.log(result);
}
}
)
我也在 mongodb 操场上尝试了这个查询,但它在那里工作正常。在实际的数据库存储期间,它会产生重复的结果。
有什么不对?
任何人都可以帮忙吗?
谢谢!
解决方案
推荐阅读
- android - ApiException 检查 FusedLocationApi 中的位置设置
- mongodb - 这个 Mongoose CursorNotFound 错误是什么?
- node.js - 在 Docker 中使用 pm2 start 实现 Nodejs
- javascript - Excel 数据未出现在数组中
- javascript - 谷歌自定义搜索限制没有结果
- reactjs - 反应,Firebase 身份验证错误
- c++ - 在 Visual C++ 中显示日文字符
- ionic-framework - 从 HTTP 正文响应中获取特定数据
- actionscript-3 - 从纹理图集中调用精灵而不在动作脚本 3 中使用八哥
- php - 使用 PHP 将文件从目录移动到另一个目录