我正在创建动物数据库。对于每个产品,我都存储在数据库信息中,如下所示::
{
"_id": ObjectId("55489125dadf65e30969d6d3"),
"codAnimal": "100001",
"animalData": {
"EN": {
"name": "Monkey",
"description": "The monkey lives in the jungle"
}
}
}
然后,我想在同一动物中添加额外的信息,但是用另一种语言,使用标签,我想为每种语言添加类似的东西:
"ES": {
"name": "Mono",
"description": "El mono vive en la selva"
}
结果应该是:
{
"_id": ObjectId("55489125dadf65e30969d6d3"),
"codAnimal": "100001",
"animalData": {
"EN": {
"name": "Monkey",
"description": "The monkey lives in the jungle"
},
"ES": {
"name": "Mono",
"description": "El mono vive en la selva"
}
}
}
但是我不知道我可以做什么方法,我不知道这是否可能。我正在使用一个retfull api nodo.js和angularjs。
您可以使用 $set
操作员使用 update> update :
var query = {
"_id": ObjectId("55489125dadf65e30969d6d3"),
"codAnimal": "100001"
},
update = {
"$set": {
"animalData.ES": {
"name": "Mono",
"description": "El mono vive en la selva"
}
}
};
db.collection.update(query, update, {"upsert": true});
- update - (未经测试)
要通过RESTFUL API发送此数据,您可能需要考虑更改文档架构,以便AnimalData信息成为一个嵌入式的子插件,更易于查询。
{
"_id": ObjectId("55489125dadf65e30969d6d3"),
"codAnimal": "100001",
"animalData": [
{
"language_id": "EN",
"name": "Monkey",
"description": "The monkey lives in the jungle"
},
{
"language_id": "ES",
"name": "Mono",
"description": "El mono vive en la selva"
}
]
}
您的server.js文件基本上应该具有此类设置,您需要在其中定义使用Mongoose定义数据库模式。模式只是您在MongoDB中数据的表示。这是您可以执行特定类型的某个字段的地方。也可能需要一个字段,唯一的,仅包含某些字符:
// server.js
var express = require("express"),
mongoose = require("mongoose"),
_ = require('lodash');
mongoose.connect('mongodb://localhost/test') // This connects to a MongoDB db called test
var animalSchema = {
"codAnimal": String,
"animalData": [{
"language_id": String,
"name": String,
"description": String
}]
}
var Animal = mongoose.model('Animal', animalSchema, 'animal')
var app = express();
/**
* Update animal details
*/
app.put('/api/animals/:id', function (req, res){
var animal = req.animal;
animal = _.extend(animal, req.body);
animal.update({ _id: animal.id },
{
"$addToSet": {
"animalData": {
"language_id": req.body.lang,
"name": req.body.name,
"description": req.body.description
}
}
},
function(err) {
if (err) {
return res.send(400, {
message: getErrorMessage(err)
});
} else {
res.jsonp(animal);
}
});
});
app.listen(3000);
上面只是API PUT操作的外观的一般准排骨结构。网络周围有很多教程,可以在设置均值堆栈应用程序时提供深入的代码,除其他外,您可以查看使用Node.js,Express和Mongodb ,创建 api使用angularjs,node.js和mongodb ,用express和mongodb and mean.js -full -stack javascript使用mongodb,emplexs,emparterjs,emparluarljs,agnaveljs,agn>和node.js