[英]MongoDB and mongoose: how to add an object if it doesn't already exist
I am having some trouble with mongoDB/mongoose and node.js. 我在使用mongoDB / mongoose和node.js时遇到了一些麻烦。 I am used to SQL, and mongoDB is...hard!
我已经习惯了SQL,而mongoDB很难...! Here is my schema:
这是我的架构:
var mongoose = require('mongoose'); var mongoose = require('mongoose');
mongoose.Promise = global.Promise; 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);
And I can add a new item by doing this: 我可以通过执行以下操作添加一个新项目:
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;
});
What I want to be able to do is say: "look for an item with item_info.item_id 5555. if it exists, do nothing. if it doesn't exist, then add it to the database." 我想做的是说:“寻找一个具有item_info.item_id 5555的项目。如果存在,则什么也不做。如果不存在,则将其添加到数据库中。” I've read through so much mongodb and mongoose documentation, but between using dot notation and accessing through nodejs instead of command line mongodb, I still can't figure out how to do this.
我已经阅读了很多mongodb和mongoose文档,但是在使用点表示法和通过nodejs而不是命令行mongodb访问之间,我仍然不知道该怎么做。 SQL seemed so much easier!
SQL似乎容易得多!
Just use this - 只需使用-
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
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.