将额外信息添加到MongoDB -API Restfull中的字段中



我正在创建动物数据库。对于每个产品,我都存储在数据库信息中,如下所示::

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

最新更新