sql >> データベース >  >> NoSQL >> MongoDB

マングースモデル、文字列の配列、オブジェクトの配列構造

    お気に入りは、次のような文字列の配列である必要があります:favorites: [String]

    カート配列には、主に2つのオプションがあります。

    1. カートを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. または、カートを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 }
        }
      }
    });
    

    どちらの場合も、ドキュメントを作成すると次のようになります。マングースがカードアイテムに_idフィールドを追加したことに注意してください。

    {
        "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"
    }
    

    _idが必要ない場合 カート配列のフィールドに、_id: falseを追加できます 次のようなカートスキーマのオプション:

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

    ここにいくつかの有用なドキュメントがあります:

    アレイ

    サブドキュメント




    1. MongoDB $ isNumber

    2. 同じフィールドのmongoドキュメントを見つける方法

    3. MongoDBをリモートで管理するためのヒント

    4. WindowsでDockerコンテナをシードする方法