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

Cách giới hạn tham chiếu tối đa của nút gốc trong mongodb

Nếu bạn đang sử dụng mongo phiên bản 3.6, bạn có thể bật xác thực giản đồ bằng cách sử dụng $jsonSchema ở phía máy chủ

mỗi tài liệu chúng tôi cập nhật / chèn sẽ được xác thực dựa trên lược đồ xác thực, nếu quá trình xác thực không thành công, một lỗi sẽ được đưa ra và sẽ không có sửa đổi nào được thực hiện trên tài liệu

nút node lược đồ thu thập

{
   _id : string,
   parent : [string, null],
   children : string[2]
}

lược đồ xác thực

db.createCollection("node", {
   validator: {
      $jsonSchema: {
         bsonType: "object",
         required: [ "_id" ],
         properties: {
            parent: {
               bsonType: ["string", "null"],
               description: "must be a string"
            },
            children: {
               bsonType: ["array"],
               items : { bsonType: ["string"] },
               minItems: 0,
               maxItems: 2,
               description: "must be a array of string and max is 2"
            }
         }
      }
   }
});

phụ trang [với tài liệu hợp lệ]

> db.node.insert( { _id: "Books", children: [ "Programming" ], parent: null } )
WriteResult({ "nInserted" : 1 })
> db.node.insert( { _id: "Programming", children: [ "Databases", "Languages" ], parent: "Books" } )
WriteResult({ "nInserted" : 1 })
> db.node.insert( { _id: "Languages", children: [ ], parent: "Programming" } )
WriteResult({ "nInserted" : 1 })
> db.node.insert( { _id: "Databases", children: [ "MongoDB", "dbm" ], parent: "Programming" } )
WriteResult({ "nInserted" : 1 })
> db.node.insert( { _id: "MongoDB", children: [ ], parent: "Databases" } )
WriteResult({ "nInserted" : 1 })
> db.node.insert( { _id: "dbm", children: [ ], parent: "Databases" } )
WriteResult({ "nInserted" : 1 })
> 

tìm thấy

> db.node.find()
{ "_id" : "Books", "children" : [ "Programming" ], "parent" : null }
{ "_id" : "Programming", "children" : [ "Databases", "Languages" ], "parent" : "Books" }
{ "_id" : "Languages", "children" : [ ], "parent" : "Programming" }
{ "_id" : "Databases", "children" : [ "MongoDB", "dbm" ], "parent" : "Programming" }
{ "_id" : "MongoDB", "children" : [ ], "parent" : "Databases" }
{ "_id" : "dbm", "children" : [ ], "parent" : "Databases" }

chèn bằng tài liệu không hợp lệ [kích thước trẻ em> 2]

> db.node.insert({_id : "1", children : ["c1", "c2", "c3"], parent : "p1"})
WriteResult({
    "nInserted" : 0,
    "writeError" : {
        "code" : 121,
        "errmsg" : "Document failed validation"
    }
})
> 

chèn không thành công với lỗi xác thực

cập nhật - cố gắng thêm con thứ 3 cho _id Databases, không thành công với lỗi xác thực

> db.node.updateOne( { _id: "Databases"}, {$push : {children: [ "Oracle" ]}} )
2018-02-25T21:00:08.087+0530 E QUERY    [thread1] WriteError: Document failed validation :
WriteError({
    "index" : 0,
    "code" : 121,
    "errmsg" : "Document failed validation",
    "op" : {
        "q" : {
            "_id" : "Databases"
        },
        "u" : {
            "$push" : {
                "children" : [
                    "Oracle"
                ]
            }
        },
        "multi" : false,
        "upsert" : false
    }
})
[email protected]/mongo/shell/bulk_api.js:466:48
Bulk/[email protected]/mongo/shell/bulk_api.js:846:49
Bulk/[email protected]/mongo/shell/bulk_api.js:910:13
Bulk/[email protected]/mongo/shell/bulk_api.js:1154:21
[email protected]/mongo/shell/crud_api.js:572:17
@(shell):1:1
> 

vui lòng tham khảo xác thực lược đồ & jsonSchema để có thêm tùy chọn, thêm xác thực vào bộ sưu tập hiện có và xử lý các lỗi xác thực




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Số lượng bản ghi theo Ngày MongoDB

  2. Đọc, viết và lưu trữ JSON với Node trên Heroku

  3. Kết nối R với mongoDB từ xa bằng rmongodb

  4. g ++ không thể liên kết tĩnh libmongcxx (r3.0.2) nhưng liên kết động hoạt động

  5. Lỗi:Không thể đọc thuộc tính 'close' của null