Những gì bạn có thể làm là kết hợp
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
3 và db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
4 trong một bộ sưu tập, như ví dụ được cung cấp dựa trên lược đồ DB quan hệ. Mongo là cơ sở dữ liệu noSQL - và điều này yêu cầu cách tiếp cận khác để quản lý tài liệuVui lòng tìm truy vấn 2 bước bên dưới, kết hợp userInfo với userRole - tạo bộ sưu tập tạm thời mới được sử dụng trong truy vấn cuối cùng để hiển thị dữ liệu kết hợp. Trong truy vấn cuối cùng, có một tùy chọn để sử dụng $out và tạo bộ sưu tập mới với dữ liệu được hợp nhất để sử dụng sau này
tạo bộ sưu tập
db.sivaUser.insert[
{
"_id" : ObjectId["5684f3c454b1fd6926c324fd"],
"email" : "",
"userId" : "AD",
"userName" : "admin"
}]
//"userinfo"
db.sivaUserInfo.insert[
{
"_id" : ObjectId["56d82612b63f1c31cf906003"],
"userId" : "AD",
"phone" : "0000000000"
}]
//"userrole"
db.sivaUserRole.insert[
{
"_id" : ObjectId["56d82612b63f1c31cf906003"],
"userId" : "AD",
"role" : "admin"
}]
"tham gia" tất cả. -]
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
Tôi có hai bộ sưu tập,
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
5 và db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
6Tôi đang thực hiện tra cứu chẳng hạn như
[{
$match: {
category_id: mongoose.Types.ObjectId[category_id]
}
},
{
$lookup: {
from: "properties",
localField: "category_id",
foreignField: "category_id",
as: "properties"
}
}
]
Về cơ bản, điều này giúp tôi có được tất cả các sản phẩm khớp với category_id và bao gồm các thuộc tính khớp với cùng một category_id
Tôi cần thêm một kiểm tra bổ sung, cho
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
0 trên kết quả db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
6. Nói cách khác, db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
6 nên được nhóm theo db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
0 được trả về từ bộ sưu tập db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
5 và khớp với cùng một khóa trong db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
6. Điều đó có ý nghĩa? bất cứ ý tưởng làm thế nào tôi có thể này?
Trang chủ Tài liệu → Hướng dẫn sử dụng MongoDB
Trên trang này
- Sự định nghĩa
- cú pháp
- Kết hợp bình đẳng với một điều kiện tham gia duy nhất
- Tham gia Điều kiện và Truy vấn con trên Bộ sưu tập đã tham gia
- Truy vấn con tương quan sử dụng cú pháp ngắn gọn
- Cư xử
- Lượt xem và đối chiếu
- Những hạn chế
- Hỗ trợ tìm kiếm bản đồ
- Bộ sưu tập được chia nhỏ
- Công cụ thực thi truy vấn dựa trên vị trí
- ví dụ
- Thực hiện đẳng thức đơn Tham gia với
6db.sivaUserInfo.aggregate[[ {$lookup: { from: "sivaUserRole", localField: "userId", foreignField: "userId", as: "userRole" } }, { $unwind:"$userRole" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :"$userRole.role" } }, { $out:"sivaUserTmp" } ]] db.sivaUserTmp.aggregate[[ {$lookup: { from: "sivaUser", localField: "userId", foreignField: "userId", as: "user" } }, { $unwind:"$user" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :1, "email" : "$user.email", "userName" : "$user.userName" } } ]]
- Sử dụng
6 với một Mảngdb.sivaUserInfo.aggregate[[ {$lookup: { from: "sivaUserRole", localField: "userId", foreignField: "userId", as: "userRole" } }, { $unwind:"$userRole" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :"$userRole.role" } }, { $out:"sivaUserTmp" } ]] db.sivaUserTmp.aggregate[[ {$lookup: { from: "sivaUser", localField: "userId", foreignField: "userId", as: "user" } }, { $unwind:"$user" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :1, "email" : "$user.email", "userName" : "$user.userName" } } ]]
- Sử dụng
6 vớidb.sivaUserInfo.aggregate[[ {$lookup: { from: "sivaUserRole", localField: "userId", foreignField: "userId", as: "userRole" } }, { $unwind:"$userRole" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :"$userRole.role" } }, { $out:"sivaUserTmp" } ]] db.sivaUserTmp.aggregate[[ {$lookup: { from: "sivaUser", localField: "userId", foreignField: "userId", as: "user" } }, { $unwind:"$user" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :1, "email" : "$user.email", "userName" : "$user.userName" } } ]]
9db.sivaUserInfo.aggregate[[ {$lookup: { from: "sivaUserRole", localField: "userId", foreignField: "userId", as: "userRole" } }, { $unwind:"$userRole" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :"$userRole.role" } }, { $out:"sivaUserTmp" } ]] db.sivaUserTmp.aggregate[[ {$lookup: { from: "sivaUser", localField: "userId", foreignField: "userId", as: "user" } }, { $unwind:"$user" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :1, "email" : "$user.email", "userName" : "$user.userName" } } ]]
- Thực hiện nhiều phép nối và truy vấn con tương quan với
6db.sivaUserInfo.aggregate[[ {$lookup: { from: "sivaUserRole", localField: "userId", foreignField: "userId", as: "userRole" } }, { $unwind:"$userRole" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :"$userRole.role" } }, { $out:"sivaUserTmp" } ]] db.sivaUserTmp.aggregate[[ {$lookup: { from: "sivaUser", localField: "userId", foreignField: "userId", as: "user" } }, { $unwind:"$user" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :1, "email" : "$user.email", "userName" : "$user.userName" } } ]]
- Thực hiện một truy vấn con không tương quan với
6db.sivaUserInfo.aggregate[[ {$lookup: { from: "sivaUserRole", localField: "userId", foreignField: "userId", as: "userRole" } }, { $unwind:"$userRole" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :"$userRole.role" } }, { $out:"sivaUserTmp" } ]] db.sivaUserTmp.aggregate[[ {$lookup: { from: "sivaUser", localField: "userId", foreignField: "userId", as: "user" } }, { $unwind:"$user" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :1, "email" : "$user.email", "userName" : "$user.userName" } } ]]
- Thực hiện một Truy vấn con tương quan ngắn gọn với
6db.sivaUserInfo.aggregate[[ {$lookup: { from: "sivaUserRole", localField: "userId", foreignField: "userId", as: "userRole" } }, { $unwind:"$userRole" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :"$userRole.role" } }, { $out:"sivaUserTmp" } ]] db.sivaUserTmp.aggregate[[ {$lookup: { from: "sivaUser", localField: "userId", foreignField: "userId", as: "user" } }, { $unwind:"$user" }, { $project:{ "_id":1, "userId" : 1, "phone" : 1, "role" :1, "email" : "$user.email", "userName" : "$user.userName" } } ]]
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
6Đã thay đổi trong phiên bản 5. 1
Thực hiện liên kết bên ngoài bên trái với một tập hợp trong cùng một cơ sở dữ liệu để lọc các tài liệu từ tập hợp "đã tham gia" để xử lý. Giai đoạn
6 thêm một trường mảng mới vào mỗi tài liệu đầu vào. Trường mảng mới chứa các tài liệu phù hợp từ bộ sưu tập "đã tham gia". Giai đoạn ____16 chuyển các tài liệu được định hình lại này sang giai đoạn tiếp theo. db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
Bắt đầu từ MongoDB 5. 1,
6 hoạt động trên các bộ sưu tập được phân đoạn. db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
Để kết hợp các phần tử từ hai bộ sưu tập khác nhau, hãy sử dụng giai đoạn đường ống
[{
$match: {
category_id: mongoose.Types.ObjectId[category_id]
}
},
{
$lookup: {
from: "properties",
localField: "category_id",
foreignField: "category_id",
as: "properties"
}
}
]
7Giai đoạn
6 có các cú pháp sau. db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
Để thực hiện đối sánh bằng giữa một trường từ các tài liệu đầu vào với một trường từ các tài liệu của bộ sưu tập "đã tham gia",
6 . db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
9The
6 lấy tài liệu có các trường này. db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
Cánh đồng
Sự miêu tả
từ
Chỉ định bộ sưu tập trong cùng một cơ sở dữ liệu để thực hiện phép nối với
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
91 là tùy chọn, bạn có thể sử dụng giai đoạn db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
92 trong giai đoạn db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
6 thay thế. Ví dụ, xem Sử dụng Giai đoạn db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
92 trong Giai đoạn db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
6. Bắt đầu từ MongoDB 5. 1, bộ sưu tập được chỉ định trong tham số
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
91 có thể được chia nhỏtrường địa phương
Chỉ định trường từ đầu vào tài liệu đến giai đoạn
6 . ______16 thực hiện đối sánh bằng trên db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
99 với db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
00 từ các tài liệu của bộ sưu tập db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
91. Nếu một tài liệu đầu vào không chứa db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
99, thì db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
6 coi trường này có giá trị là db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
04 cho mục đích đối sánh. vùng ngoại quốc
Chỉ định trường từ các tài liệu trong bộ sưu tập
db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
91. ______16 thực hiện đối sánh bằng trên db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
00 với db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
99 từ các tài liệu đầu vào. Nếu một tài liệu trong bộ sưu tập db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
91 không chứa db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
00, thì db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
6 coi giá trị là db.sivaUserInfo.aggregate[[
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
]]
db.sivaUserTmp.aggregate[[
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
]]
04 cho các mục đích khớp. như
Chỉ định tên của trường mảng mới để thêm vào các tài liệu đã tham gia. Trường mảng mới chứa các tài liệu phù hợp từ bộ sưu tập đã tham gia. Nếu tên được chỉ định đã tồn tại trong tài liệu đã tham gia, trường hiện có sẽ bị ghi đè