我正在尝试设计一个嵌套的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作为字符串数组?
答案 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()
)。如果您没有任何重要数据,请从一个新的开始。