, 당신은 매개 변수를하여 여러개의 테이블을 조인 할 수 있습니다. 이것은 여러 번 연결될 수 있기 때문입니다.
1 단계 : 링크 모든 테이블
$ 조회 -
$가 긴장 쿼리의 각 테이블에 대해 하나 - 데이터가 제대로 denormalised 때문에, 다른 배열에 싸여
파이썬 코드 ..
db.LeftTable.aggregate([
# connect all tables
{"$lookup": {
"from": "RightTable",
"localField": "ID",
"foreignField": "ID",
"as": "R"
}},
{"$unwind": "R"}
# {"$lookup": {
# "from": "TopTable",
# "localField": "ID",
# "foreignField": "ID",
# "as": "T"
# }},
# {"$unwind": "T"},
])
2 단계 : 당신이 선택하고 싶은 여기에 모든 조건문을 정의, 플러스 모든 변수 : 모든 조건문
$ 프로젝트을 정의합니다.
파이썬 코드 ..
db.LeftTable.aggregate([
# connect all tables
{"$lookup": {
"from": "RightTable",
"localField": "ID",
"foreignField": "ID",
"as": "R"
}},
{"$unwind": "R"},
# {"$lookup": {
# "from": "TopTable",
# "localField": "ID",
# "foreignField": "ID",
# "as": "T"
# }},
# {"$unwind": "T"},
# define conditionals + variables
{"$project": {
"midEq": {"$eq": ["$MID", "$R.MID"]},
# "midGt": {"$gt": ["$MID", "$T.MID"]},
"ID": 1, "MOB": 1, "MID": 1
}}
])
3 단계 : 모든 조건문
$ 일치 가입 - OR 또는 AND 등이의 배수가있을 수 있습니다 사용하는 모든 조건을 가입 할 수 있습니다.
$ 프로젝트 : UNDEFINE 모든 조건문
파이썬 코드
..
db.LeftTable.aggregate([
# connect all tables
{"$lookup": {
"from": "RightTable",
"localField": "ID",
"foreignField": "ID",
"as": "R"
}},
{"$unwind": "$R"},
# {"$lookup": {
# "from": "TopTable",
# "localField": "ID",
# "foreignField": "ID",
# "as": "T"
#}},
#{"$unwind": "$T"},
# define conditionals + variables
{"$project": {
"midEq": {"$eq": ["$MID", "$R.MID"]},
# "midGt": {"$gt": ["$MID", "$T.MID"]},
"ID": 1, "MOB": 1, "MID": 1
}},
# join all conditionals
{"$match": {
"$and": [
{"R.TIM": {"$gt": 0}},
{"MOB": {"$exists": True}},
{"midEq": {"$eq": True}},]
}},
# undefine conditionals
{"$project": {
"midEq": 0,
# "midGt": 0
}}
])
꽤 많은 테이블, 조건문의 조합과 결합이 방식으로 수행 할 수 있습니다.
좋은 출발점이 될 수 있습니다. https://www.mongodb.com/blog/post/joins-and-other-aggregation-enhancements-coming-in-mongodb-3-2-part-1-of -3 소개 – Barney
이미 위의 쿼리의 일부를 구축하는 데 도움이 게시물을 추천했습니다. 포스트는 내가 지금 찾고있는 여러 개의 키로 합류하는 것에 관해 말하지 않는다. –
mongoDB에서이 작업을 수행 할 수 있습니까? –