ClojureでMongoDBにアクセスしてみる2
マップの中にマップがあるような場合のアクセス方法。
get-in関数を使って、キーを順番に指定して取り出す。
実行結果
user> (use 'somnium.congomongo) nil user> (mongo! :db "mydb") true user> (insert! :robots {:name1 "robby1" :name2 {:name-2-1 "robby2-1" :name3 {:name3-1 "name3-1"}}}) {:_id #<ObjectId 4d0d9747da33c172eaf7bc9b>, :name2 {:name3 {:name3-1 "name3-1"}, :name-2-1 "robby2-1"}, :name1 "robby1"} user> (fetch :robots) ({:name2 {:name3 {:name3-1 "name3-1"}, :name-2-1 "robby2-1"}, :name1 "robby1", :_id #<ObjectId 4d0d9747da33c172eaf7bc9b>}) user> (get-in (fetch-one :robots) [:name2 :name3]) {:name3-1 "name3-1"} user> (get-in (fetch-one :robots) [:name2 :name3 :name3-1]) "name3-1"