mongodb - 如何根据少数组合获得 MONGO 文档,而这些组合不止一次
问题描述
如何根据在以下文档中具有多次以上的几种组合来获取 mongo 文档,我需要组合"Location"
, "Company"
, "start"
,"end"
仅用于“Id”:“Q1D3”具有这种组合不止一次,但INT_ID
会有所不同
{
"Id" : "Q1D3",
"INT_ID" : "1234",
"Location" : "ENG",
"Company" : "COMP1",
"start" : 20191001,
"end" : 20230930
}
{
"Id" : "Q1D3",
"INT_ID" : "1235",
"Location" : "ENG",
"Company" : "COMP1",
"start" : 20191001,
"end" : 20230930
}
{
"Id" : "Q1D3",
"INT_ID" : "1236",
"Location" : "USA",
"Company" : "COMP3",
"start" : 20191001,
"end" : 20230930
}
{
"Id" : "Q1D3",
"INT_ID" : "1237",
"Location" : "USA",
"Company" : "COMP3",
"start" : 20191001,
"end" : 20230930
}
{
"Id" : "Q1D5",
"INT_ID" : "1237",
"Location" : "ENG",
"Company" : "COMP1",
"start" : 20191001,
"end" : 20230930
}
{
"Id" : "Q1D5",
"INT_ID" : "1239",
"Location" : "ENG",
"Company" : "COMP1",
"start" : 20191001,
"end" : 20230930
}
{
"Id" : "Q1D3",
"INT_ID" : "1237",
"Location" : "CAN",
"Company" : "COMP1",
"start" : 20191001,
"end" : 20230930
}
从上面的示例中,我只需要查询即可获取文档
{
"Id" : "Q1D3",
"INT_ID" : "1234",
"Location" : "ENG",
"Company" : "COMP1",
"start" : 20191001,
"end" : 20230930
}
{
"Id" : "Q1D3",
"INT_ID" : "1235",
"Location" : "ENG",
"Company" : "COMP1",
"start" : 20191001,
"end" : 20230930
}
{
"Id" : "Q1D3",
"INT_ID" : "1236",
"Location" : "USA",
"Company" : "COMP3",
"start" : 20191001,
"end" : 20230930
}
{
"Id" : "Q1D3",
"INT_ID" : "1237",
"Location" : "USA",
"Company" : "COMP3",
"start" : 20191001,
"end" : 20230930
}
有人可以帮我吗
解决方案
$match
你的情况$group
byLocation
,Company
,start
andend
fields 并在其中创建文档数组doc
$unwind
解构doc
数组- $group by
INT_ID
和 firstdoc
$replaceRoot
将doc
对象替换为根
db.collection.aggregate([
{ $match: { Id: "Q1D3" } },
{
$group: {
_id: {
Location: "$Location",
Company: "$Company",
start: "$start",
end: "$end"
},
doc: { $push: "$$ROOT" }
}
},
{ $unwind: "$doc" },
{
$group: {
_id: "$doc.INT_ID",
doc: { $first: "$doc" }
}
},
{ $replaceRoot: { newRoot: "$doc" } }
])
推荐阅读
- django - 使用 apache2 部署 django 时加载数据时出错
- javascript - 嵌入式网站、Iframe 或 Ajax 中缺少信息?
- php - 如何在 Codeigniter PHP 中创建登录 API
- assembly - Solidity 组装错误:必须调用内置函数“gas”
- python - 解决python中纸浆库的功能:类型错误:必须是实数,而不是str
- php - 尝试从 html 表单更新 sql 表
- javascript - 不正确和正确的陈述
- javascript - Javascript - 无法读取 json 键值 - JSON 中位置 1 的意外令牌 i - sql 查询输出问题
- nodatime - 尝试使用 ZonedDateTimePattern 从字符串解析 ZonedDateTime 失败
- reactjs - 处理 useEffect 中的 fetch api 错误并设置错误