Mongodb 最短入门(1) 安装并启动于 EC2,立即尝试写入数万条记录

MongoDB 的安装、启动和批量插入数据

虽然我本来想在两行内完成的,但是已经有epel库中也有mongo,但是它运行不顺利。

使用yum安装mongodb-org,并启用epel存储库。

    • ちゃんと公式のリポジトリ使ったほうがいいよ

 

    いろんな人の書いてるリポジトリはふるいから公式いってみたほうがいいよ。

即使安裝成功,執行時還是會出錯
/usr/bin/mongod:符號查詢錯誤:/usr/bin/mongod:未定義符號:_ZN7pcrecpp2RE4InitEPKcPKNS_10RE_OptionsE

因为是EC2,所以才那样。最好从软件源安装,因为我不打算更改/lib64/libpcre.so.0.0.1之类的文件。
参考:http://stackoverflow.com/questions/20872774/epel-mongodb-will-not-start-on-ec2-amazon-ami

请从添加存储库开始、一直到启动的过程中保持安静。

这次我参考了适用于Amazon Linux的页面:
https://docs.mongodb.org/manual/tutorial/install-mongodb-on-amazon/

※リポジトリのbaseurl で3.X 系 と 2.X 系を選ぶ。

添加yum.repos.d

使用sudo命令,打开vi编辑器,并打开路径为/etc/yum.repos.d/mongodb.repo的文件。

[mongodb]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=0

安装

以管理员身份运行以下命令:sudo yum install -y –enablerepo=mongodb mongodb-org

启动服务

请启动MongoDB:sudo service mongod start。

好的好的,我起来了。

启动控制台

莫高

我試著去碰一下

命令的官方文档在这里。

将JSON格式的数据输入到honyarara来创建数据。

最开始是一个名为test的数据库,并可以使用”use dbname”进行切换。
貌似是根据需要进行创建的类型。我喜欢这样的。
因为honyarara是Collection数据集的名字,所以可以选择我喜欢的。

db.honyarara.insert(
   {
     item: "test"
   }
)

请帮我寻找数据,全部都给我。

db.honyarara.find()

进来了吧

请帮我找到一个被标记为“test”的物品。

db.honyarara.find("item":"test")

找到了。

结束!

退出()

插入式容器

在JavaScript中,MongoDB有一种类似的感觉。批量插入可以使用以下命令。

db.collection.bulkWrite(
   [
      { insertOne : { "document" : { name : "sue", age : 26 } } },
      { insertOne : { "document" : { name : "joe", age : 24 } } },
      { insertOne : { "document" : { name : "ann", age : 25 } } },
      { insertOne : { "document" : { name : "bob", age : 27 } } },
      { updateMany: {
         "filter" : { age : { $gt : 25} },
         "update" : { $set : { "status" : "enrolled" } }
         }
      },
      { deleteMany : { "filter" : { "status" : { $exists : true } } } }
   ]
)

由于JSON无法完成此任务,因此我将解压缩CSV的gzip文件,并在过程中逐步插入数万条记录。

使用Python读取gz压缩的文本文件,并进行每1000个条目的批量插入

可以使用pymongo进行安装。

安装pymongo的pip命令。

执行将CSV文件读取并保存到mongodb的脚本。

用中国的母语将以下内容再表述一遍,只需要一种选项:

运行命令:python insert.py “filename.csv.gz”

哇!太快了!我已经输入了600万个但顺利进行中。

# coding: utf-8
import pymongo
import sys
import csv
import gzip
#Client取得
client=pymongo.MongoClient()
#database取得
db=client.test
#Collection取得
mongo=db.hoge

#ひとつめの引数がCSVファイルのパス
infiename=sys.argv[1]
#CSVファイルに入っている順番でカラム名のリスト
keynames=('name','age','gender')
#カウンタ itemsのリストに追加しながら、指定件数に到達するとバルクインサート
i=0;
items=[]
#gzipを開けつつ―の
with gzip.open(infiename, 'r') as f:
#CSVを読みつつ―の delimiter の部分に区切り文字指定
    reader = csv.reader(f, delimiter=",")
    for row in reader:
#CSVの各行のデータにカラム名のキーをつけて辞書にして
        data=dict(zip(keys,row))
#リストに追加していく
        items.append(data)
        i=i+1
#1000件たまったら、フラッシュしてリセット
        if(i%1000==0):
            result=mongo.insert_many(items)
#入ったIDを返す
            #print result.inserted_ids
            items=[]
            i=0
#最後あまってたらいれる
if(i>0):
    mongo.insert_many(items)