Làm cách nào để thêm trường mới vào tài liệu hiện có trong MongoDB Compass?

Để thêm trường mới vào mọi tài liệu trong bộ sưu tập MongoDB, bạn có thể sử dụng toán tử $set. Cú pháp như sau

db.yourCollectionName.update({}, { $set: {"yourFieldName": yourValue} }, false, true);

Để hiểu cú pháp trên, chúng ta hãy tạo một bộ sưu tập với một số tài liệu. Truy vấn để tạo một bộ sưu tập với các tài liệu như sau

>db.addNewFieldToEveryDocument.insertOne({"StudentName":"John","StudentAddress":"US
"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906ae")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"David","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906af")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Carol","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b0")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Bob","StudentAddress":"US"
});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b1")
}

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(). Truy vấn như sau

> db.addNewFieldToEveryDocument.find().pretty();

Sau đây là đầu ra

{
   "_id" : ObjectId("5c6efc0b6fd07954a48906ae"),
   "StudentName" : "John",
   "StudentAddress" : "US"
}
{
   "_id" : ObjectId("5c6efc0b6fd07954a48906af"),
   "StudentName" : "David",
   "StudentAddress" : "UK"
}
{
   "_id" : ObjectId("5c6efc0b6fd07954a48906b0"),
   "StudentName" : "Carol",
   "StudentAddress" : "UK"
}
{
   "_id" : ObjectId("5c6efc0b6fd07954a48906b1"),
   "StudentName" : "Bob",
   "StudentAddress" : "US"
}

Sau đây là truy vấn để thêm một trường mới vào mọi tài liệu

> db.addNewFieldToEveryDocument.update({}, { $set: {"StudentAge": 24} }, false, true);
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 4 })

Ở trên, chúng tôi đã thêm một trường mới “Tuổi học sinh”. 24 trong mọi tài liệu. Hãy để chúng tôi kiểm tra trường “Tuổi học sinh”. 24 có được thêm thành công vào mọi tài liệu hay không. Truy vấn như sau

Tôi có một bộ sưu tập trong MongoDB của mình với hàng nghìn tài liệu. Mỗi tài liệu trông như thế này hiện tại

{
    "_id" : ObjectId("1"),
    "FIELD1" : {
        "STR1" : "some text",
        "STR2" : "some text",
        "STR3" : "some text",
        "STR4" : "some text"
    },
    "FIELD2" : "some text"
}

Với đoạn mã sau, tôi đã quản lý để thêm một trường mới vào TẤT CẢ hơn 4000 tài liệu

// Add new field to all documents   
BasicDBObject query = new BasicDBObject();
BasicDBObject update = new BasicDBObject();
update.put("$set", new BasicDBObject(NEW_DB_FIELD_NAME, new BasicDBObject()));
WriteResult result = coll.update(query, update, true, true);

Các tài liệu có cấu trúc mới trong đó

>db.addNewFieldToEveryDocument.insertOne({"StudentName":"John","StudentAddress":"US
"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906ae")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"David","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906af")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Carol","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b0")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Bob","StudentAddress":"US"
});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b1")
}
7 là một
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"John","StudentAddress":"US
"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906ae")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"David","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906af")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Carol","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b0")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Bob","StudentAddress":"US"
});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b1")
}
8

{
    "_id" : ObjectId("1"),
    "FIELD1" : {
        "STR1" : "some text",
        "STR2" : "some text",
        "STR3" : "some text",
        "STR4" : "some text"
    },
    "FIELD2" : "some text",
    "FIELD3" : {
    }
}

Bây giờ, vấn đề là tôi muốn thêm nhiều mục vào

>db.addNewFieldToEveryDocument.insertOne({"StudentName":"John","StudentAddress":"US
"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906ae")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"David","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906af")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Carol","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b0")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Bob","StudentAddress":"US"
});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b1")
}
7 trong đó mỗi mục là một
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"John","StudentAddress":"US
"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906ae")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"David","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906af")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Carol","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b0")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Bob","StudentAddress":"US"
});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b1")
}
8 chứa 2
// Add new field to all documents   
BasicDBObject query = new BasicDBObject();
BasicDBObject update = new BasicDBObject();
update.put("$set", new BasicDBObject(NEW_DB_FIELD_NAME, new BasicDBObject()));
WriteResult result = coll.update(query, update, true, true);
0

{
    "_id" : ObjectId("1"),
    "FIELD1" : {
        "STR1" : "some text",
        "STR2" : "some text",
        "STR3" : "some text",
        "STR4" : "some text"
    },
    "FIELD2" : "some text",
    "FIELD3" : {
        "ITEM1" : {
            "STR1" : "",
            "STR2" : ""
        },
        "ITEM2" : {
            "STR1" : "",
            "STR2" : ""
        },
        "ITEM3" : {
            "STR1" : "",
            "STR2" : ""
        }
    }
}

Những gì tôi đã cố gắng là đây

>db.addNewFieldToEveryDocument.insertOne({"StudentName":"John","StudentAddress":"US
"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906ae")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"David","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906af")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Carol","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b0")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Bob","StudentAddress":"US"
});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b1")
}
0

Vấn đề là tôi chỉ có thể nhận được một mặt hàng mới trong ngày

>db.addNewFieldToEveryDocument.insertOne({"StudentName":"John","StudentAddress":"US
"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906ae")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"David","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906af")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Carol","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b0")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Bob","StudentAddress":"US"
});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b1")
}
7. Nó liên tục được thay thế bằng các giá trị mới khi tôi lặp qua các mục

Hãy giúp tôi

CẬP NHẬT

Với sự trợ giúp của @Explosion Pills, tôi đã thêm được tất cả

// Add new field to all documents   
BasicDBObject query = new BasicDBObject();
BasicDBObject update = new BasicDBObject();
update.put("$set", new BasicDBObject(NEW_DB_FIELD_NAME, new BasicDBObject()));
WriteResult result = coll.update(query, update, true, true);
2,
// Add new field to all documents   
BasicDBObject query = new BasicDBObject();
BasicDBObject update = new BasicDBObject();
update.put("$set", new BasicDBObject(NEW_DB_FIELD_NAME, new BasicDBObject()));
WriteResult result = coll.update(query, update, true, true);
3,
// Add new field to all documents   
BasicDBObject query = new BasicDBObject();
BasicDBObject update = new BasicDBObject();
update.put("$set", new BasicDBObject(NEW_DB_FIELD_NAME, new BasicDBObject()));
WriteResult result = coll.update(query, update, true, true);
4, v.v. tới
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"John","StudentAddress":"US
"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906ae")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"David","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906af")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Carol","StudentAddress":"U
K"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b0")
}
>db.addNewFieldToEveryDocument.insertOne({"StudentName":"Bob","StudentAddress":"US"
});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6efc0b6fd07954a48906b1")
}
7 mới được tạo của tôi. Tuy nhiên, hiện tại tôi có một vấn đề khác là tôi có các mục 'trùng lặp' trong đó trường
// Add new field to all documents   
BasicDBObject query = new BasicDBObject();
BasicDBObject update = new BasicDBObject();
update.put("$set", new BasicDBObject(NEW_DB_FIELD_NAME, new BasicDBObject()));
WriteResult result = coll.update(query, update, true, true);
6 giống nhau. tôi không muốn điều đó

Một cách tao nhã để loại bỏ trùng lặp là gì?

Tôi đã không đủ rõ ràng trước đó về vấn đề trùng lặp. Điều đó là, các mặt hàng khác nhau phải có tên khác nhau, e. g. ITEM1, ITEM2, v.v. ; . Điều tôi muốn so sánh là những

// Add new field to all documents   
BasicDBObject query = new BasicDBObject();
BasicDBObject update = new BasicDBObject();
update.put("$set", new BasicDBObject(NEW_DB_FIELD_NAME, new BasicDBObject()));
WriteResult result = coll.update(query, update, true, true);
6 của họ

Sẽ tốt hơn/dễ dàng hơn nếu tôi lưu trữ dữ liệu trong một cấu trúc khác? . Hiện tại, nó giống như sau, từ đó tôi muốn loại bỏ các loại trái cây trùng lặp với các trường "DƯA DỪA"

Làm cách nào để thêm trường mới vào tài liệu hiện có trong MongoDB java?

Cách thêm trường vào mảng MongoDB bằng Java .
Giới thiệu. .
điều kiện tiên quyết. .
Bộ dữ liệu MongoDB. .
Thiết lập quyền truy cập vào triển khai MongoDB. .
Thiết lập quyền truy cập vào cơ sở dữ liệu MongoDB. .
Thiết lập quyền truy cập vào bộ sưu tập MongoDB. .
Thêm tài liệu MongoDB mới vào tài liệu MongoDB hiện có

Làm cách nào để thêm trường mảng mới vào tài liệu hiện có trong MongoDB?

Vì vậy, có thể thêm một trường mới vào một mảng bằng cách sử dụng thao tác cập nhật . Toán tử $push được sử dụng để chèn trường bên trong mảng và nếu chúng ta muốn thêm nhiều trường, hãy sử dụng $each bên trong $push.