gpt4 book ai didi

javascript - mongodb 插入是否创建新模式

转载 作者:可可西里 更新时间:2023-11-01 10:27:43 26 4
gpt4 key购买 nike

我有一个已经在运行和存储数据的现有 mongoDB 服务器,假设它包含集合:“name”和“id”。我使用 insert 命令存储这些集合。现在我需要添加一个新集合,比如说“地址”。我还可以使用 insert 简单地添加“address”集合吗?每次我使用 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 集合,其中包含带有 nameid 字段的文档。您使用 insert 命令创建了这些文档。


您的问题 1:“我也可以使用插入来简单地添加“地址”集合吗?”

我想您是在问是否可以使用 insert 向文档添加新字段(即地址)。

insert命令用于插入新文档。如果您使用它来更新,则该命令将失败,因为您的 _id key 是重复的,如果未提供或未提供 _id,它将创建一个新文档已经存在。


您的问题 2:“mongoDB 是在我每次使用插入时创建一个新模式,还是只是更新模式?”

你的措辞令人困惑。我认为您的意思是“文档”而不是“架构”。

无论如何,如果您使用insert 命令在集合中插入文档而该集合不存在,那么该集合将被创建并且 em> 该文档将被插入到该新集合中。

如果集合已经存在,那么将在集合中创建一个新文档。


您的问题 3:“mongoDB 会创建一个包含上述三个模式的新模式,还是只用一个新模式更新现有模式?”

同样,我认为您指的是“文档”而不是“架构”。

当使用 insert 时,mongodb 将创建一个新文档,如其他两个问题中所述。


总结

为了进行更新,您应该使用 update命令。意识到 update 命令有一个 upsert 参数,如果 true 在没有文档匹配查询条件时创建一个新文档。这可能对您有所帮助。

帮助您使用术语:

  • collection - 类似于 RDBMS 中的“表”;存在于数据库中;可能包含许多文件
  • document - mongodb 集合中的一条记录
  • field - 文档中的名称-值对

关于javascript - mongodb 插入是否创建新模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32124280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com