万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Unity & MongoDB

    Macでやりたいのでここからzipをダウンロードする。
    http://driver-downloads.mongodb.org/dotnet/index.html

    ちなみにこちらではgitとかから落とせる手順
    http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#csharp-driver-tutorial-downloading

    公式: http://docs.mongodb.org/ecosystem/drivers/csharp/



    → おそらくUnityのではMonoのバージョンが古くて動かないっぽい。

    ・動かないというやりとり
    URLその1: http://grokbase.com/p/gg/mongodb-csharp/131qh77maj/mongodb-user-re-were-planning-to-make-net-4-the-minimum-requirement-for-the-c-net-driver

    URLその2: https://groups.google.com/forum/#!topic/mongodb-csharp/v5bR6bmXxGg

    しかし、テキトーに探してると、「monodevelop-mongodb-provider」なるもの
    こちらのはできた。
    monodevelop-mongodb-providerのgithubのURL: https://github.com/schamane/monodevelop-mongodb-provider

    ・MongoDB.Bson.dll
    ・MongoDB.Driver.dll
    をUnityのpluginsにぶっこむ。僕は「MongoDB」フォルダを生成してから行った。
    「plugins/MongoDB」

    この「けさらんぱさらん」というサイトを参考にした。
    URL: http://d.hatena.ne.jp/cer1974/20120427/1335539220

    ・MongoDBTest.cs

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    
    using System;
    // MongoDB dll
    using MongoDB.Driver;
    using MongoDB.Driver.Builders;
    using MongoDB.Bson;
    using MongoDB.Bson.Serialization.Attributes;
    
    public class MongoDBTest : MonoBehaviour
    {
        // Use this for initialization
        void Start ()
        {
            // mongodb://[username:password@]hostname[:port][/[database][?options]]
            var server = MongoServer.Create ("mongodb://localhost");
            var db = server.GetDatabase ("mydb");
            var collection = db.GetCollection ("entities");
            var entry = new AddressEntry ()
            {
                Name = "Mr.name",
                Birthday = DateTime.Parse ("1964/02/03"),
                EmailAddrs = new List<Email> ()
                {
                    new Email () { DisplayName = "momo",  MailAddress = "T.Sumomo@momo.com" },
                    new Email () { DisplayName = "bono", MailAddress = "Bonobono@bono.jp" }
                }
            };
            collection.Insert (entry);
        }
    
        [BsonIgnoreExtraElements]
        public class AddressEntry
        {
            //[BsonId] ここをコメントアウトしないとIDが必至になってしまうのでコメントアウトした
            //public BsonObjectId _id { get; set; }
    
            public string Name { get; set; }
    
            public DateTime Birthday { get; set; }
    
            public List<Email> EmailAddrs { get; set; }
        }
    
        [BsonIgnoreExtraElements]
        public class Email
        {
            public string DisplayName { get; set; }
    
            public string MailAddress { get; set; }
        }
    }
    

    → これを実行した。

    ・コンソールでの確認

    & mongo
    MongoDB shell version: 2.2.0
    connecting to: test
    > use mydb
    switched to db mydb
    > db.entities.find()
    { "_id" : ObjectId("51f87ed9f70ac5769e2683ad"), "Name" : "Mr.name", "Birthday" : ISODate("1964-02-02T15:00:00Z"), "EmailAddrs" : [ 	{ 	"DisplayName" : "momo", 	"MailAddress" : "T.Sumomo@momo.com" }, 	{ 	"DisplayName" : "bono", 	"MailAddress" : "Bonobono@bono.jp" } ] }
    

    な感じになる。