MongoDB和mongoose:如果对象尚不存在,如何添加它

时间:2017-07-03 05:06:50

标签: node.js mongodb mongoose

我在使用mongoDB / mongoose和node.js时遇到了一些麻烦。我习惯了SQL,而mongoDB很难!这是我的架构:

var mongoose = require('mongoose');

mongoose.Promise = global.Promise;

var itemSchema= mongoose.Schema({

    item_info        : {
        user_id      : Number,
        location     : String,
        item_id      : Number,
        title        : String
    },
    item_hist        : {
        user_id      : Number,
        location     : String,
        item_id      : Number,
        founddate    : String
       }
});
module.exports = mongoose.model('item', itemSchema);

我可以通过这样做添加一个新项目:

    var item= require('./app/models/item');
    var item= new item();
    item.item_info.user_id      =  12345;
    item.item_info.location     = 'This address';
    item.item_info.item_id      = 4444;
    item.item_info.title        = 'New item';
    item.save(function(err) 
    {
        if (err)    throw err;
    });

想要能够做的是:“使用item_info.item_id 5555查找项目。如果存在,则不执行任何操作。如果不存在,则将其添加到数据库。“我已经阅读了这么多mongodb和mongoose文档,但在使用点表示法和通过nodejs而不是命令行mongodb访问之间,我仍然无法弄清楚如何执行此操作。 SQL似乎更容易!

1 个答案:

答案 0 :(得分:0)

请使用此 -

    var query = { user_id: 12345, location: "This address", item_id: 4444, title: "New item"  },

        options = { upsert: true };

   Model.findOneAndUpdate(query.item_id, query, options, function(error, result) {
    if (error) return;

    // do something with the document
});