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

mô hình mongoose, mảng chuỗi, cấu trúc mảng đối tượng

Mục yêu thích phải là một mảng Chuỗi như sau:favorites: [String]

Đối với mảng giỏ hàng, chúng tôi có hai tùy chọn chính:

  1. Chúng tôi có thể xác định giỏ hàng dưới dạng một mảng subdocuments .
const schema = new Schema({
  email: { type: String, unique: true, required: true },
  hash: { type: String, required: true },
  createdDate: { type: Date, default: Date.now },
  settings: {
    favorites: [String],
    cart: [
      {
        quantity: Number,
        marketId: String
      }
    ],
    states: {
      favorites: { type: Boolean, default: true },
      search: { type: Boolean, default: false },
      category: { type: Schema.Types.Mixed, default: false }
    }
  }
});
  1. Hoặc chúng ta có thể khai báo giỏ hàng dưới dạng một mảng schema types .
const schema = new Schema({
  email: { type: String, unique: true, required: true },
  hash: { type: String, required: true },
  createdDate: { type: Date, default: Date.now },
  settings: {
    favorites: [String],
    cart: [
      new Schema({
        quantity: Number,
        marketId: String
      })
    ],
    states: {
      favorites: { type: Boolean, default: true },
      search: { type: Boolean, default: false },
      category: { type: Schema.Types.Mixed, default: false }
    }
  }
});

Đối với cả hai tài liệu này, khi bạn tạo tài liệu, nó sẽ trông giống như thế này, lưu ý rằng mongoose đã thêm trường _id trong các mục thẻ.

{
    "settings": {
        "states": {
            "favorites": true,
            "search": false,
            "category": false
        },
        "favorites": [
            "234",
            "564",
            "213",
            "782"
        ],
        "cart": [
            {
                "_id": "5e6cd0bd53feb32d50699b79",
                "quantity": 5,
                "marketId": "234"
            },
            {
                "_id": "5e6cd0bd53feb32d50699b78",
                "quantity": 2,
                "marketId": "564"
            },
            {
                "_id": "5e6cd0bd53feb32d50699b77",
                "quantity": 7,
                "marketId": "213"
            },
            {
                "_id": "5e6cd0bd53feb32d50699b76",
                "quantity": 3,
                "marketId": "782"
            }
        ]
    },
    "_id": "5e6cd0bd53feb32d50699b75",
    "email": "[email protected]",
    "hash": "hash...",
    "createdDate": "2020-03-14T12:40:29.969Z",
    "__v": 0,
    "id": "5e6cd0bd53feb32d50699b75"
}

Nếu bạn không muốn _id trong mảng giỏ hàng, bạn có thể thêm _id: false tùy chọn lược đồ giỏ hàng như sau:

    cart: [
      new Schema(
        {
          quantity: Number,
          marketId: String
        },
        { _id: false }
      )
    ],

Dưới đây là một số tài liệu hữu ích:

Mảng

Tài liệu con




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB oplog có các bản ghi với các dấu chấm trong tên khóa, không thể được truy vấn cho, sau khi

  2. Tại sao express nói với tôi rằng công cụ xem mặc định của tôi không được xác định?

  3. Không thể kết nối với MongoDB errno:61

  4. MongoDB.service không thành công với mã thoát kết quả

  5. Làm cách nào để thực hiện nhiều hơn / nhỏ hơn so với sử dụng MongoDB?