Để hợp nhất, hãy sử dụng toán tử $setUnion. Trước tiên chúng ta hãy tạo một bộ sưu tập với các tài liệu -
> db.mergeTwoArrayFieldDemo.insertOne[{"NaturalNumbers":[1,2,3,8,10,20,30],"WholeNumbers":[0,1,2,63,78,20,45]}]; { "acknowledged" : true, "insertedId" : ObjectId["5cd68e4057806ebf1256f11d"] }
Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find[] -
> db.mergeTwoArrayFieldDemo.find[].pretty[];
Điều này sẽ tạo ra đầu ra sau -
{ "_id" : ObjectId["5cd68e4057806ebf1256f11d"], "NaturalNumbers" : [ 1, 2, 3, 8, 10, 20, 30 ], "WholeNumbers" : [ 0, 1, 2, 63, 78, 20, 45 ] }
Sau đây là truy vấn để hợp nhất hai trường mảng trong MongoDB
> db.mergeTwoArrayFieldDemo.aggregate[[ { "$project": { "MergedArray": { "$setUnion": [ "$NaturalNumbers", "$WholeNumbers" ] } }} ]];
Điều này sẽ tạo ra đầu ra sau -
{ "_id" : ObjectId["5cd68e4057806ebf1256f11d"], "MergedArray" : [ 0, 1, 2, 3, 8, 10, 20, 30, 45, 63, 78 ] }
Cập nhật ngày 30-Jul-2019 22. 30. 26
ví dụ
Tham gia hai mảng
const arr1 = ["Cecilie", "Lone"];
const arr2 = ["Emil", "Tobias", "Linus"];
const children = arr1.concat[arr2];
Tự mình thử »
Tham gia ba mảng
const arr1 = ["Cecilie", "Lone"];
const arr2 = ["Emil", "Tobias", "Linus"];
const arr3 = ["Robin"];
const children = arr1.concat[arr2, arr3];
Thêm ví dụ bên dưới
Định nghĩa và cách sử dụng
Phương thức
> db.mergeTwoArrayFieldDemo.find[].pretty[];1 nối [nối] hai hoặc nhiều mảng
Phương thức
> db.mergeTwoArrayFieldDemo.find[].pretty[];1 trả về một mảng mới, chứa các mảng đã nối
Phương thức
> db.mergeTwoArrayFieldDemo.find[].pretty[];1 không thay đổi các mảng hiện có
cú pháp
mảng1. concat[mảng2, mảng3,. , mảngX]
Thông số
ParameterDescriptionarray1,. Yêu cầu.[Các] mảng cần nối.
Giá trị trả về
TypeDescriptionMột mảngNội dung từ các mảng đã tham giaThêm ví dụ
Nối các chuỗi và số
const arr1 = ["Cecilie", "Lone"];
const arr2 = [1, 2, 3];
const arr3 = . concat[arr2];
Tự mình thử »
Nối các mảng lồng nhau
const mảng1 = [1, 2, [3, 4]];
const mảng2 = [[5, 6], 7, 8];
const arr3 = arr1.concat[arr2];
Hỗ trợ trình duyệt
> db.mergeTwoArrayFieldDemo.find[].pretty[];1 là một tính năng ECMAScript1 [ES1]
ES1 [JavaScript 1997] được hỗ trợ đầy đủ trên mọi trình duyệt
ChromeEdgeFirefoxSafariOperaIECóCóCóCóCóCóTôi đang cố hợp nhất các mảng từ một yêu cầu với các mảng hiện có trong cơ sở dữ liệu MongoDB. Khi tôi in đầu ra của yêu cầu, các mảng không hợp nhất. Điều gì có vẻ là vấn đề ở đây?
router.post['/add-publication-data', async [req, res] => {
try {
const publication = await Publications.findOne[{ _id: req.body._id }];
publication.toObject[];
publication.additionalauthors.concat[req.body.additionalauthors]
publication.students.concat[req.body.students]
console.log[publication.students]
publication.institutions.concat[req.body.institutions]
publication.keywords.concat[req.body.keywords]
publication.highlights.concat[req.body.highlights]
publication.save[]
.then[
data => {
res.json[data];
}]
.catch[e => {
res.json[{
message: e
}];
}];
} catch [err] { console.log[err]; res.json[{ message: err }] };
}];
- stackoverflow. comghi bàn. 1
câu trả lời được chấp nhận
phương thức concat[]
Kết quả của bạn là hành vi mong đợi của phương pháp
> db.mergeTwoArrayFieldDemo.find[].pretty[];5. Từ tài liệu MDN
Phương thức concat[] được sử dụng để hợp nhất hai hoặc nhiều mảng. Phương thức này không thay đổi các mảng hiện có mà thay vào đó trả về một mảng mới
Bạn sẽ cần gán lại kết quả để có mảng được hợp nhất, thay đổi từ
publication.additionalauthors.concat[req.body.additionalauthors]
đến
publication.additionalauthors = publication.additionalauthors.concat[req.body.additionalauthors]
đẩy[] phương pháp
Một giải pháp khác là sử dụng phương pháp
> db.mergeTwoArrayFieldDemo.find[].pretty[];6
Phương thức push[] thêm một hoặc nhiều phần tử vào cuối mảng và trả về độ dài mới của mảng
Tôi hiện có một trường trong MongoDB là danh sách các mảng. Tôi muốn chuyển đổi tất cả những thứ này thành một chuỗi, nhưng trước tiên tôi cần [tôi đoán vậy?] Để nối danh sách các mảng của tôi thành một mảng trước khi chuyển đổi nó
Đây là những gì lĩnh vực của tôi trông giống như
________số 8Đây là những gì tôi đã cố gắng nối nó cho đến nay [với
> db.mergeTwoArrayFieldDemo.find[].pretty[];7], nhưng nó không hoạt động{ $addFields: {"Sites": { $concatArrays: ["$tdb.Data.site.list"]}}},
Và những gì tôi muốn làm cuối cùng để chuyển đổi mảng cuối cùng thành một chuỗi
> db.mergeTwoArrayFieldDemo.find[].pretty[];0Ai đó có thể giúp tôi xin vui lòng?. ] Cảm ơn trước
Làm cách nào để hợp nhất 2 mảng trong MongoDB?
MongoDB cung cấp các loại toán tử biểu thức mảng khác nhau được sử dụng trong các giai đoạn đường ống tổng hợp và toán tử $concatArrays là một trong số đó. Toán tử này được sử dụng để nối hai hoặc nhiều mảng và trả về một mảng đã nối. Ở đây, mảng phải là một biểu thức hợp lệ cho đến khi nó phân giải thành một mảng.Toán tử nào được sử dụng để kết hợp hai biểu thức MongoDB?
A toán tử bậc ba đánh giá một biểu thức và tùy thuộc vào kết quả, trả về giá trị của một trong hai biểu thức còn lại.Giao lộ MongoDB là gì?
Trong MongoDB, toán tử đường ống tổng hợp $setIntersection chấp nhận hai hoặc nhiều mảng và trả về một mảng chứa các phần tử xuất hiện trong tất cả các mảng đầu vào. $setIntersection accepts two or more arguments, all of which can be any valid expression as long as they each resolve to an array.