我有一个已经在运行并存储数据的现有 mongoDB 服务器,假设它包含集合:“name”和“id”。
我使用 insert
命令存储这些集合。
现在我需要添加一个新集合,比如说“地址”。
我可以使用insert
简单地添加“地址”集合吗?
每次我使用 insert
时 mongoDB 都会创建一个新模式还是只是更新模式?我的意思是,mongoDB 会创建一个包含上面三个的新架构,还是只会用新架构更新现有架构?
我会用现有的代码更好地解释自己:
var env = {
'User': 'aaa',
'Pass': '123',
'stats_a': 'collectionA',
'db_name': 'localhost:27017/nodedb',
'proxy_name': 'proxy',
'proxy_port': 8080
};
var monk = require('monk');
var db = monk(env.db_name);
//now i will get the collection and store data in it
var CollectionA = db.get(env.stats_a);
// create data to insert...
CollectionA.insert(data)
现在我想向 var env
添加一个新参数,然后像这样插入:
var env = {
'User': 'aaa',
'Pass': '123',
'stats_a': 'collectionA',
//new collection
'stats_b': 'collectionB',
//new collection
'db_name': 'localhost:27017/nodedb',
'proxy_name': 'proxy',
'proxy_port': 8080
};
var monk = require('monk');
var db = monk(env.db_name);
//now i will get the collection and store data in it
var CollectionA = db.get(env.stats_a);
var CollectionB = db.get(env.stats_b);
// create data to insert...
CollectionA.insert(data)
CollectionB.insert(data)
如果我使用的话,更新后的代码将起作用(假设 time_stamp 存在):
var retJson = {A: {}, B: {}};
var CollectionA = db.get(env.stats_a);
var CollectionB = db.get(env.stats_b);
CollectionA.findOne({}, {sort: {time_stamp: -1}}, function (err, doc) {
retJson.A = doc;
CollectionB.findOne({}, {sort: {time_stamp: -1}}, function (err, doc) {
retJson.B = doc;
res.set('Access-Control-Allow-Origin', '*');
res.send(retJson);
});
});
谢谢!
最佳答案
您的问题中的术语不太正确。但我认为这是对您的请求的一个很好的总结:您有一个 mongodb 集合,其中包含带有 name 和 id 字段的文档。您使用insert
命令创建了这些文档。
您的问题 1:“我也可以使用插入功能简单地添加“地址”集合吗?”
我认为您是在问是否可以使用insert
向文档添加新字段(即地址)。
不。 insert命令仅用于插入新文档。如果您使用它来更新,则该命令将失败,因为您的 _id 键是重复的或,如果未给出或未给出 _id,它将创建一个新文档已经存在。
您的问题 2:“每次我使用插入时 mongoDB 都会创建一个新架构,还是只是更新架构?”
你的措辞令人困惑。我认为你的意思是“文档”而不是“架构”。
无论如何,如果您使用 insert
命令在集合中插入文档并且该集合不存在,那么将创建该集合并且 文档将被插入到该新集合中。
如果集合已存在,则将在集合内创建一个新文档。
您的问题 3:“mongoDB 会创建一个包含上述三个模式的新模式,还是只会用新模式更新现有模式?”
再说一次,我认为你的意思是“文档”而不是“模式”。
当使用insert
时,mongodb将创建一个新文档,如其他两个问题中提到的。
摘要
为了进行更新,您应该使用 update命令。请注意,update
命令有一个 upsert
参数,如果 true 在没有文档与查询条件匹配时创建一个新文档。这可能对您有帮助。
帮助您了解术语:
- collection - 类似于 RDBMS 中的“表”;存在于数据库中;可能包含许多文档
- document - mongodb 集合中的一条记录
- field - 文档中的名称-值对
关于javascript - mongodb insert 是否创建新模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32124280/