MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chèn dữ liệu vào mảng lồng nhau trong mongodb

Bạn có thể cập nhật tài liệu "bán hàng" được nhúng bên trong mảng "act_mgr" bằng câu lệnh cập nhật sau:

> db.sales.update({"act_mgr.sales.last_interacted":"[email protected]"}, {$push:{"act_mgr.$.sales.agent":"[email protected]"}, $set:{"act_mgr.$.sales.last_interacted":"[email protected]"}})
> db.sales.find().pretty()
{
    "_id" : ObjectId("4f855061dd53351011000b42"),
    "act_mgr" : [
        {
            "sales" : {
                "agent" : [
                    "[email protected]",
                    "[email protected]"
                ],
                "last_interacted" : "[email protected]"
            }
        }
    ],
    "email" : "[email protected]",
    "name" : "Aman",
    "sales" : [
        {
            "sno" : 1,
            "message" : "description",
            "status" : "open"
        },
        {
            "sno" : 12,
            "message" : "assad",
            "status" : "open"
        }
    ]
}
> 

Bạn có thể thêm tài liệu nhúng có chứa thông tin "nhà phát triển" vào mảng như sau:

> db.sales.update({"_id" : ObjectId("4f855061dd53351011000b42")}, {$push:{"act_mgr":{ "developer" : {"agent" : ["[email protected]" ],  "last_interacted" : "[email protected]" } }}})
> db.sales.find().pretty()
{
    "_id" : ObjectId("4f855061dd53351011000b42"),
    "act_mgr" : [
        {
            "sales" : {
                "agent" : [
                    "[email protected]",
                    "[email protected]"
                ],
                "last_interacted" : "[email protected]"
            }
        },
        {
            "developer" : {
                "agent" : [
                    "[email protected]"
                ],
                "last_interacted" : "[email protected]"
            }
        }
    ],
    "email" : "[email protected]",
    "name" : "Aman",
    "sales" : [
        {
            "sno" : 1,
            "message" : "description",
            "status" : "open"
        },
        {
            "sno" : 12,
            "message" : "assad",
            "status" : "open"
        }
    ]
}
> 

Bạn có thể tìm thấy tài liệu về công cụ sửa đổi $ push và $ set trong tài liệu "Đang cập nhật": http ://www.mongodb.org/display/DOCS/Updating

Bạn có thể tìm thêm thông tin về cách tạo và cập nhật tài liệu nhúng với Mongo db trong tài liệu có tiêu đề "Ký hiệu dấu chấm (Tiếp cận đối tượng)" http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29

Bạn có thể tìm thấy thông tin về cách cập nhật tài liệu được nhúng bằng toán tử vị trí "$" trong phần "Toán tử vị trí $" của tài liệu "Đang cập nhật".
http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

Lời cảnh báo:Thông thường, tất cả các tài liệu nhúng đều khớp với cùng một cấu trúc, để các tài liệu nhúng riêng lẻ có thể được tham chiếu dễ dàng hơn. Mảng "bán hàng" của bạn là một ví dụ điển hình về điều này; mỗi tài liệu được nhúng chứa cùng các khóa, "sno", "message" và "status"

Tuy nhiên, các tài liệu được nhúng bên trong mảng "act_mgr" của bạn chứa các khóa khác nhau; đầu tiên chứa "bán hàng" và thứ hai chứa "nhà phát triển". Thay vào đó, có thể xem xét cấu trúc sau:

"act_mgr" : [
    {
        "title" : "sales",
        "agent" : [
            "[email protected]",
            "[email protected]"
        ],
        "last_interacted" : "[email protected]"
    },
    {
        "title": "developer",
        "agent" : [
            "[email protected]"
        ],
        "last_interacted" : "[email protected]"
    }
]

Giờ đây, mỗi tài liệu được nhúng đều chứa các khóa giống nhau, "title", "agent" và "last_interacted".

Bạn có thể cập nhật các tài liệu con bằng lệnh sau.

> db.sales.update({"act_mgr.title":"sales"}, {$push:{"act_mgr.$.agent":"[email protected]"}, $set:{"act_mgr.$.last_interacted":"[email protected]"}})

Hy vọng rằng điều này sẽ cho phép bạn thực hiện các cập nhật mà bạn cần và có thể cung cấp cho bạn một số suy nghĩ về thiết kế lược đồ. Chúc bạn thành công!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. chi phí của các khóa trong cơ sở dữ liệu tài liệu JSON (mongodb ,asticsearch)

  2. Cập nhật nhiều phần tử trong một mảng trong mongodb

  3. Không thể khởi tạo bộ sao chép trong Ubuntu

  4. NodeJS + Mongo native - kiểm tra xem bộ sưu tập có tồn tại hay không trước khi truy vấn

  5. Thực thi mã nhị phân mongodb trên alpine linux