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

问题描述 投票:0回答:1

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

Id(document's name) : {

many json for same ID

} 

如何在 ruby 中获得这个结构?

数据库的名称是“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 数组追加到一个文档中,但也不起作用。

我该怎么办? 谢谢

json ruby mongodb ruby-on-rails-3
1个回答
0
投票

MongoDB 中的文档由字段和值对组成。您通常有一个带有

ObjectID
值的 _id 字段来标识文档以及保存文档数据的其他字段,例如:

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

然后可以通过

insert_one
:

将上述文档插入到集合中
coll.insert_one(doc)

对于嵌入数据也同样有效,例如一个名为 data:

数组

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

coll.insert_one(doc)

要将新值附加到现有数组,可以使用

$push
运算符:

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

要将多个值附加到数组,您可以将 $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"} # ] # }
    
© www.soinside.com 2019 - 2024. All rights reserved.