MongoDB - 我如何查询 SQL 的“INTERSECT”?
Posted
技术标签:
【中文标题】MongoDB - 我如何查询 SQL 的“INTERSECT”?【英文标题】:MongoDB - how can I query "INTERSECT" of SQL? 【发布时间】:2020-06-03 12:49:45 【问题描述】:我对 MongoDB 查询中的“INTERSECT”查询有疑问。
我想在 MongoDB 中像下面的 SQL 查询一样查询。
(select course_id from section where semester = 'fall' and year = '2009')
intersect
(select course_id from section where semester = 'spring' and year = '2010');
在我的MongoDB中,Section集合数据结构如下。
"_id" :
"course_id" : "486",
"sec_id" : "1",
"semester" : "Fall",
"year" : 2009.0
,
"course_id" : "486",
"sec_id" : "1",
"semester" : "Fall",
"year" : 2009.0,
"building" : "Whitman",
"room_number" : "134",
"time_slot_id" : "K"
如何查询得到与SQL语言相同的结果?
【问题讨论】:
【参考方案1】:这不是很性感,但你可以这样做:
db.collection.aggregate([
$match:
$or: [
$and: [
year: 2009
,
semester: "fall"
]
,
$and: [
year: 2010
,
semester: "spring"
]
]
,
$group:
_id: "$course_id",
years_x_semester: $addToSet: year: "$year", semester: "$semester",
,
$match:
"years_x_semester.1": $exists: true
])
【讨论】:
本以为可以,但测试后,无法得到想要的结果。:'-( 你想要什么结果? 稍作修改就解决了!非常感谢!!!以上是关于MongoDB - 我如何查询 SQL 的“INTERSECT”?的主要内容,如果未能解决你的问题,请参考以下文章