2017-07-03 24 views
0

我遇到了一些麻烦mongoDB/mongoose和node.js。我习惯于SQL,并且mongoDB很难!这是我的模式:MongoDB和mongoose:如何添加一个对象,如果它不存在

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似乎更容易!

+0

你尝试使用{UPSERT:真正}的选择吗? –

+0

不 - 我对此一无所知 – garson

回答

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 
}); 
+0

谢谢,但它说它无法找到'模型'?对不起,我是新手,不确定如何制作所有正确的参考。 – garson

+0

@garson对不起,这个“模型”是导入的模式。我认为你将它作为“项目”导入。 –

+0

谢谢。这工作。我意识到我也有一个单独的问题,但我会为此提出一个单独的问题。 – garson

相关问题