如何在MongoDB模式,嵌套对象和数组MEAN堆栈中创建嵌套对象

时间:2017-12-06 22:48:05

标签: json mongodb mean-stack mongoose-schema

我正在尝试设计一个嵌套的MongoDB架构。

目前,我有这个架构并且它正在运行:

var CompanySchema = new mongoose.Schema({
    name: String,
    rate: number
    date: Date
})

但我想把它花在上面:

var CompanySchema = new mongoose.Schema({
    name: String,
    currency: {
        mxn: Number,
        php: Number,
    },
    source: [String],
    deliveryMethod: [String],
    date: Date
})

对于源代码,我想得到一个输入数组ex。 [“银行”,“借记卡”,“代理人”] 和送货方法差不多一样。

但是我的输入错误或我的架构,因为源的值保存为一个长字符串,而不是分隔值。

另外,我认为我设计货币以获得更多货币汇率的方式是正确的,但我不知道我的输入json应该如何。

我在邮差中尝试过:

{
    "name": "google",
    "currency": {
        "mxn": 20,
        "php": 30
    }
} 

这是我得到的结果:

{
"status": 201,
"data": {
    "__v": 0,
    "name": "google",
    "date": "2017-12-06T22:38:45.896Z",
    "_id": "5a2871752e3b7343dc388549",
    "deliveryMethod": [
        null
    ],
    "source": [
        null
    ]
},
"message": "Succesfully Created  Company"
}

1-如果我的货币嵌套模式是正确的,我的帖子json文件应该是什么?

2-如何将source和deliveryMethod作为字符串数组?

1 个答案:

答案 0 :(得分:1)

请求正文中的JSON应如下所示:

{
    "name": "google",
    "currency": {
        "mxn": 20,
        "php": 30
    },
    "source": ["source1", "source 2", "source 3"],
    "deliveryMethod": ["delMetd 1", "delMetd 2", "delMetd 3"],
    "date": "2015-11-27T23:00:00Z"
}

我复制/粘贴您的代码并尝试使用Postman。我得到的回应是:

{
    "__v": 0,
    "name": "google",
    "date": "2015-11-27T23:00:00.000Z",
    "_id": "5a2915295c5f714f7cb25d90",
    "deliveryMethod": [
        "delMetd 1",
        "delMetd 2",
        "delMetd 3"
    ],
    "source": [
        "source1",
        "source 2",
        "source 3"
    ],
    "currency": {
        "mxn": 20,
        "php": 30
    }
}

如果我使用mongo shell连接到数据库并运行db.companies.find().pretty(),我会得到以下结果:

{
        "_id" : ObjectId("5a2915295c5f714f7cb25d90"),
        "name" : "google",
        "date" : ISODate("2015-11-27T23:00:00Z"),
        "deliveryMethod" : [
                "delMetd 1",
                "delMetd 2",
                "delMetd 3"
        ],
        "source" : [
                "source1",
                "source 2",
                "source 3"
        ],
        "currency" : {
                "mxn" : 20,
                "php" : 30
        },
        "__v" : 0
}

您的架构很好。如果无法使用它,可以尝试删除集合(db.companies.drop())。如果您没有任何重要数据,请从一个新的开始。