Tag: capped collections

mongodb – 用nodejs加盖的集合

我正在尝试使用Node.js(使用本地MongoDB驱动程序)设置和更新MongoDB中的某些封顶集合。 我的目标是,在运行app.js时,将文档插入到加盖的集合中,还要更新封顶集合中的现有文档。 这两个都在setInterval()上运行,所以每隔几秒钟。 我的问题: 我想创build一个集合,如果集合尚不存在,但如果它我想要插入一个文档,而不是。 什么是正确的方法来检查这个? 有了capped集合,我甚至应该在插入任何内容之前先明确地创build它们? 通常情况下,我相信你可以直接插入一个集合而不需要明确地创build它们,但是在这种情况下,我需要确保它们是封闭的。 一旦封顶的集合存在,我知道如何插入新的文档,问题是我需要一些方法来处理应用程序正在使用的应用程序(在一个新的服务器上)集合尚不存在,我想使用节点来做这个创build,而不必跳进mongo cli。 这里的技巧是集合需要被封顶,所以我可以做一些事情: db.createCollection("collectionName", { capped : true, size : 100000, max : 5000 } ) 。 这将为我创build封顶的集合,但每次我调用它都会调用createCollection()而不是更新或插入 – 如果我调用createCollection() ,一旦集合已经存在,它会完全覆盖现有的集合吗? 另一种方法是将一个集合转换为一个封闭的集合: db.runCommand({"convertToCapped": "collectionName", size: 100000, max : 5000 }); 。 这个问题是节点没有看到runCommand()作为一个有效的function,它的错误。 还有什么别的,我打算叫这个工作? 它在mongo cli中工作,但不在节​​点内 您使用什么types的查询来查找集合中的第一个文档? 再次,在mongo cli中,我可以使用db.collections.find()和一些查询,但是在节点中它声明find()不是一个有效的函数 我将如何使用collection.update()将一些新的字段添加到现有的文档? 比方说,文档是一些简单的对象,如{key1: "value", key2: "value"}但是我有一个包含{key3: "value"} 。 关键3在当前文件中不存在,我将如何添加到目前存在的? 这与上面#4有些相关,因为find()似乎不能很好地与节点一起使用,所以我不确定要传入什么查询参数。