在mongoDB的一个文档中插入多个json文件

2024-01-12

我有个问题: 但是如何在一个文档集合中插入许多 json 文件呢? 我有一个与 mongoDB 连接的 ruby​​ 脚本,它为每个 ID 产品生成 json 文件。 在 mongo 中我应该想要一个像这样的结构:

Id(document's name) : {

many json for same ID

} 

我怎样才能在红宝石中得到这个结构?

DB 的名称为“test_db”,集合的名称为“test_coll”

代码是:

Client = Mongo::Client.new([127.0.0.1:27017], :dtaabase => paperino)
json_array ={}
my_hash =Hash.new{}
my_array = Array.new
coll = Client[:ID_product]

添加敏感数据以填充 Json 文件

my_hash = JSON.parse(json_array.to_json)
my_array = my_hash
coll.update({{id: single_id_product} {"$push" => {json: 
my_array}},{upsert:true})

ruby 脚本为 1 个 id_product 生成更多 json 文件

我想将 1 个产品的所有 json 文件保存在 1 个文档中, 我尝试经典的 insert.many 或插入一个但不起作用,因为为 1 个 json 生成 1 个文档。

我尝试方法 $push 将所有 json 数组追加到一个文档中,但也不起作用。

我能怎么做? 谢谢


MongoDB 中的文档由字段和值对组成。您通常有一个_id场与ObjectID用于标识文档和保存文档数据的附加字段的值,例如:

doc =  {
  _id: BSON::ObjectId('650aeca18772677bb6613a89'),
  name: "foo"
}

然后可以通过以下方式将上述文档插入到集合中insert_one https://www.mongodb.com/docs/ruby-driver/current/api/Mongo/Collection.html#insert_one-instance_method:

coll.insert_one(doc)

这同样适用于嵌入数据,例如一个array called data:

doc =  {
  _id: BSON::ObjectId('650aee198772677bb6613a8a'),
  data: [
    { name: 'foo' },
    { name: 'bar' }
  ]
}

coll.insert_one(doc)

要将新值附加到现有数组,请执行以下操作$push https://www.mongodb.com/docs/manual/reference/operator/update/push/操作员:

coll.update_one(
  { _id: BSON::ObjectId('650aee198772677bb6613a8a') },
  { '$push': { data: { name: 'baz' } } }
)

To 将多个值附加到数组 https://www.mongodb.com/docs/manual/reference/operator/update/push/#append-multiple-values-to-an-array, 您可以使用$push$each修饰符:

coll.update_one(
  { _id: BSON::ObjectId('650aee198772677bb6613a8a') },
  { '$push': { data: { '$each': [ { name: 'qux' }, { name: 'quux' } ] } } }
)

上述修改后的文档:

coll.find(_id: BSON::ObjectId('650aee198772677bb6613a8a')).first
#=> {
#     "_id"=>BSON::ObjectId('650aee198772677bb6613a8a'),
#     "data"=>[
#       {"name"=>"foo"},
#       {"name"=>"bar"},
#       {"name"=>"baz"},
#       {"name"=>"qux"},
#       {"name"=>"quux"}
#     ]
#   }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在mongoDB的一个文档中插入多个json文件 的相关文章

随机推荐

  • Emacs 在 C 中的宏后缩进

    define INIT MACRO create some enviroment void function INIT MACRO extra indented normal indented 当要求自动缩进时 如何让emacs正确处理上述
  • 使用 AWS SDK 以 IAM 用户身份登录

    谁能帮助我了解如何使用 AWS SDK 以 IAM 用户身份登录 我正在使用适用于 Java 的 AWS 开发工具包 并且一直在寻找合适的 API 来以 IAM 用户身份登录 但我无法做到这一点 我能够传递访问密钥和密钥以使用 SDK 登录
  • 如何从 Firebase Firestore set() 调用返回承诺?

    这是我的问题的后续https stackoverflow com questions 54100270 google translate api and firebase firestore are killing each other 道
  • Spring Boot 2.x 的性能问题?

    我最近将Web应用程序中使用的Spring Boot版本从1 5版本更新到2 1版本 当我对其进行负载测试时 我的运行时间从 25 分钟缩短到 35 分钟 我知道这是一个广泛的问题 但是有谁知道为什么应用程序在升级 Spring Boot
  • 在 javascript 中填写表单的通用方法

    我正在寻找一种真正通用的方法来使用 javascript 基于参数字符串 填写 表单 例如 如果我有这个表格
  • R 通过 Hoovermode 绘图显示 x 轴值

    按照此question https stackoverflow com questions 70576618 r plotly bar chart positive negative values different color secon
  • Qt update() 不起作用

    我有一个问题 update 函数QGraphicsItem不起作用 我想做的是 当我移动圆圈时 其他QGraphicsItem 同时 roundrect 改变颜色 这是一个例子 我想做的事情 圆 cpp void CircleItem mo
  • 为什么我的 Google 网络字体是像素化的?

    我正在尝试在一个简单的网站中使用谷歌字体 我正在使用的标签是 CSS 是 body padding 0 text align center line height 180 background 1a2426 color f7f7f7 fon
  • EF 6 代码优先存储过程 - 只读

    我搜索了一些帖子 但都没有找到 我首先使用 EF6 代码尝试从数据库中已设置的存储过程获取结果 我的应用程序很简单 它从两个不同的服务器获取数据 执行一些业务逻辑 然后向用户显示 我可以使用 edmxfile Fine 它将函数映射到 xm
  • ImportError:无法从“google.cloud”(未知位置)导入名称“pubsub_v1”

    我正在尝试将 pubsub v1 导入云函数中 但是当我尝试将其部署到GCP上时 出现了如标题所示的问题 requirements txt 文件与 main py 文件位于同一目录中 这是requirements txt中的内容 googl
  • Excel:有没有一个函数可以返回满足匹配条件的范围? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 给定一个值与后续行 同一列上 进行比较 并返回直到该值第一次更改的行的范围 Example A 1 cat 2 cat 3 cat 4 dog 5 c
  • 具有 CuDNNLSTM 层的 Keras 模型无法在生产服务器上运行

    我使用 AWS p3 实例通过 GPU 加速训练以下模型 x CuDNNLSTM 128 return sequences True inputs x Dropout 0 2 x x CuDNNLSTM 128 return sequenc
  • JavaScript 中有语音或语音就绪事件吗? [复制]

    这个问题在这里已经有答案了 我在 Google Chrome 上尝试了以下操作 它会打印出来0声音 然后再次打印0我的电脑上有声音 但如果我重新加载页面以重新开始 并将最后一行更改为setTimeout foo 1000 那么第一行会打印出
  • 函数printf()打印退格问题

    有两个程序 它们得到不同的结果 但我不明白为什么 这是第一个 int main printf 12345 fflush stdout printf b b fflush stdout return 0 结果是 123 然后是第二个 int
  • 在单击按钮之前不要对引导表实施过滤器控制

    我提出的问题的后续行动earlier https stackoverflow com questions 64720472 add button on header th to hide and show filter control in
  • 将自定义类型转换注入 .NET 库类

    我想通过C 中的Convert ChangeType实现两个库类之间的转换 我无法改变这两种类型 例如 Guid 和 byte 之间的转换 Guid g new Guid object o1 g byte b byte Convert Ch
  • 在 Laravel 5.x 中组织 trans() 本地化文件的好策略有哪些?

    这是一个关于方法论和建议实践的问题 我知道它并没有严格依附于框架 甚至不是 PHP 答案可能是 这取决于你 但我关心的是最佳实践和方法 因为通常存在针对特定环境的最佳方法 我想知道哪些是最佳实践键命名为了trans 的函数Laravel 5
  • 在 Linux 中禁用网络摄像头自动对焦

    我正在 beagleboard 的嵌入系统中工作 源代码是Python的 但我从OpenCV导入库来进行图像处理 实际上 我使用的是 Logitech c910 网络摄像头 它是一款出色的摄像头 但它具有自动对焦功能 我想知道是否可以从 P
  • FreeRTOS 匈牙利表示法 [重复]

    这个问题在这里已经有答案了 我是 RTOS 和 C 编程的新手 而且我仍在习惯 C 的良好实践 因此 我打开了一个使用 FreeRTOS 的项目 我注意到操作系统文件使用匈牙利表示法 我知道一点符号 但面临一些新的 标准 FreeRTOS
  • 在mongoDB的一个文档中插入多个json文件

    我有个问题 但是如何在一个文档集合中插入许多 json 文件呢 我有一个与 mongoDB 连接的 ruby 脚本 它为每个 ID 产品生成 json 文件 在 mongo 中我应该想要一个像这样的结构 Id document s name