Làm cách nào để nối hai mảng trong mongodb?

Để 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];

Tự mình thử »

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 gia

Thê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];

Tự mình thử »

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. com

ghi 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[];
0

Ai đó 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.

Chủ Đề