Shoken Startup Blog

KitchHike Founder/CTO

ドキュメントのネスト

MongoDBはドキュメントをネストさせることができます。

Mongo Shellから

insert

> db.nest.insert({x:5,list:{a:1,b:2}})

確認

> db.nest.find().forEach(printjson)
{
        "_id" : ObjectId("4fb5e74522646db867ef11f6"),
        "x" : 1,
        "list" : {
                "a" : 1,
                "b" : 2
        }
}

rubyから

rubyからMongoDBへネストしたドキュメントをinserして表示するサンプル。

#!/usr/local/bin/ruby
# -*- encoding: utf-8 -*-

require 'mongo'

db_name="test"
coll_name = "nest"

db = Mongo::Connection.new.db(db_name)
coll = db.collection(coll_name)

coll.insert({:x => 2,:list => {:a => 2, :b => 4}})

coll.find().each{ |doc|
  puts doc.inspect
}
[root@xxx xxx]# ruby mongo_nest.rb
{"_id"=>BSON::ObjectId('4fb5e74522646db867ef11f6'), "x"=>5.0, "list"=>{"a"=>1.0, "b"=>2.0}}
{"_id"=>BSON::ObjectId('4fb5e8523e91d8207d000001'), "x"=>1, "list"=>{"a"=>3, "b"=>9}}