【发布时间】:2017-09-03 21:37:15
【问题描述】:
喂!
长话短说。
我正在使用什么:
- node.js
- MongoDB
- 猫鼬
有没有办法在插入时向 mongo 集合添加自定义字段?
我每 30 分钟通过 JSON 文件插入一些数据量(~35Mb 没什么大不了的),我想为一次插入的每个文档添加一个静态的自定义字段。
(实际上这是一个已经由另一个服务器生成的时间戳,不幸的是 mongodb 已经为它自己的内部使用保留了“时间戳”,所以这就是我在这里的原因)
我的代码看起来像这样
...
var toomuchJSONdata = [{
"name":"John",
"age":30,
}
{
"name":"Carl",
"age":25,
}{
"....":"....",
"....":"....",
}];
...
to-my.collection.insertMany(toomuchJSONdata)
...
那么解决我的问题的最佳/最简单的方法是什么?或者我走错了方向,为每个 JSON 对象添加自定义“键”:“值”更容易更好?喜欢:
var toomuchJSONdata = [{
"name":"John",
"age":30,
"customkey":"customvalue"
}
顺便说一句,在 Mongo 中以日期或时间戳的形式存储数据更好吗? (我想存储它,因为我将来需要 $aggregate 数据) 我已经做了什么(..还在做):
- 使用 .insert 和 mongoose.model 进行实验
- 忽略了 mongoose/mongodb/native-mongodb-for node.js 的文档
- 我已经在 google 编码 3 个多小时了,但仍然无法解决我的问题。
【问题讨论】:
-
您可以发布您所做的尝试吗?到目前为止,我看到的只是 JSON 数据,而不是您尝试将其放入数据库的尝试。添加一个字段非常简单,所以我不确定是什么让你没有看到它。
-
实际上我已经尝试过这样的事情:to-my.collection.insertMany(toomuchJSONdata,[{"key":"value") //通过猫鼬和各种不同的驱动器以各种不同的方法。代码可以正常工作并且可以很好地插入工作。我知道添加自定义字段对于 stackoverflow 问题来说并不是什么大问题。但我只需要对集合中所有已在某一时刻插入的文档执行此操作。不幸的是,我发现只有 docs 可以使所有收集的文档都可以做到这一点,但不是我最近插入的所有文档
-
这对您有帮助吗? db.collection.updateMany() 或 $set
-
我发现并且现在已经在工作的唯一“hack”是重命名一个不必要的字段并将我的“时间戳”数据插入其中。你是绝对正确的,问题不在 mongo 中,更多的是关于这里的 JSON。该文件总是每 30 分钟更改一次,所以我什至不知道下一次将导入多少文档(字符串)(就是这样我无法通过 _id 解决这个问题)
-
为什么不直接转换内存中的对象呢?在进行 updatemany 之前,使用 Array.map 创建包含添加字段的新文档集合?
标签: javascript json node.js mongodb mongoose