Product Getting Started Managing Data Connectivity Moving, Migrating and Syncing Data Managing, Viewing and Editing Data Querying and Aggregating Data Automation and Collaboration Performance and Optimization Operations Security
ググって昔の日本語記事を読むとこういう解説が良く出てきますが、不正確です。 どちらかというと間違いです。 例えば、このようにインデックスを張った時に: > db.foo.ensureIndex({x:1}, {unique:1, sparse:1}) {x:null} なドキュメントを連続で保存しようとすると、2 回目で重複エラーが発生します: > db.foo.save({x:null}) > db.foo.save({x:null}) WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: sos_test.sandbox.$x_1 dup key:
まえおき 前回までの記事で、Node.jsのアプリ上で4sqAPIを叩いて色々出来る下地が整ったのですが、ユーザアカウントの切り分けなどは全く考慮していないので、このままだとユーザAさんがOAuthした後にユーザBさんがサイトにアクセスするとBさんは何もしなくても自動的にAさんのチェックイン履歴が見られる、というファンタスティックな事態に陥ります。 今回はいったん前回までのFourSquareAPIの話は忘れて、上記問題に対してsessionの作法をExpressアプリ上に実装することで対応しようと勉強をした内容をまとめます。 参考にさせていただいた記事様 今回は、こちらの記事様をベースとして勉強しました。 Node.js+Express+MongoDBでSessionを利用してログイン機能を実装 - Qiita その中でわかりにくかった部分などをピックアップしてまとめておきます。 Git
MongoDB Advent Calendar 2013の10日目の記事です。 2つほどNode.js + MongoDBで作ったサービスを最近リリースする機会があったので、そこで得られた個人的な知見や感想についてつらつら書きまとめようと思います。 前提 今回はアプリ側の開発を担当していて、インフラ周りはインフラチームやMongoDBのプロバイダーに御任せでしたので、そちらの設定などの話はノータッチです。 元々の業務ではMySQLを使っていて、この2つのプロジェクトで初めてMongoDBを勉強しました。 永続化にMongoDBを使う理由 MySQLでなくMongoDBを使う理由はMongoDB自体の利便性などもあげることができるかもしれませんが、個人的には運用面での利点が強いと思っています。(特にサンフランシスコのような人材採用が激しい地域の場合) シャーディングやフェイルオーバーが大規模
Tokyo Otaku ModeではNode.jsからMongoDBにアクセスするのにODMとしてMongooseを採用しています。 Mongoose(ODM)を利用するメリットとしては、 collectionのSchema設計がコードに残る virtualなどデータ周りの機能がModelに集約できる populationが利用できる などが上げられます。 どれもサービスを効率的に作る上で助かる機能ばかりですが、とくにpopulationは別ドキュメントのreference(_id)を持っているだけで、自動的にドキュメントに展開してくれる強力な機能です。 一方で、DBロック回避の目的やある程度の規模になってDBを分割するようになると、別DBのcollectionをpopulateできないという問題がでてきます。 Mongooseの仕様上、特定DBへのconnectionとModel(col
■ MongoDBでdb.videos.find(); とかするとフィールドが多いとかなり見ずらい。そこで、特定のフィールドだけ表示させたい。 ■ コマンド例 db.videos.find({},{'_id':0, 'description':0, 'timestamp':0}); フィールド名: 0 が非表示でフィールド名: 1 が表示。 デフォルトが表示っぽいので、特定のフィールドだけ表示したい時は他のフィールドをすべて0にすればいい。 ■ では1はどういうときに使うか。 条件が複数のときに使える。 titleが'Bike'だけで検索 >db.videos.find({'title': 'Bike'}); { "_id" : ObjectId("51967021e66501b29f13b47f"), "category" : "sports", "description" : "Rid
mongoコマンドから接続した際にオールドタイプ(SQL脳)たる我々人類にも 調べやすい形でinsert、select、updateを行う方法を調べました。 定義参照 // use [データベース名] use [データベース名] // show databases show dbs // show tables show collections参照系 // select * from [コレクション名] db.[コレクション名].find() // select * from [コレクション名] where x=4 db.[コレクション名].find({x:4}) // select j from [コレクション名] where x=4 db.[コレクション名].find({x:4}, {j:1}) // select * from [コレクション名] limit 1 db.[コレクション
MongodbのCRUD操作を試してみました。 実行環境はwindows, mongodb v2.2です。 シェルからmongoクライアントを起動する デフォルト・ポートは27017。 > mongo localhost:27017 MongoDB shell version: 2.2.2 connecting to: localhost:27017/test mongos > データベース選択 データベースの作成は必要ない。 Mongodbではデータを格納したタイミングで、データベースとコレクションが自動的に作成される。 mongos> use MyDatabase switched to db MyDatabase Read & Write Testdataコレクションに対して、name=tarouを格納。 命令はJavascriptで書く。 insert()が成功すると、データを
「第3回 MongoDB 勉強会 in Tokyo」 : ATND 先週土曜日(2011年5月14日)にフューチャーアーキテクトさんのセミナールームにて行われたMongoDBの勉強会に行ってきました。 MongoDBの仕様・機能などの体系的な話からチューニングの話、開発に利用する話、プロダクションとして運用している話と、バランスよくまとまっていてとても勉強になりました。 RDBとの違いや特有の挙動をきちんと把握して利用すれば、十分プロダクションで利用出来るというビジョンが見えました。 詳細は各発表者の方のスライドを見るとわかると思いますが、当日会場でメモしたものでダイジェスト的にまとめました。 MongoDB勉強会は毎月開催(予定)しているそうなので、興味を持たれた方は是非参加して見てください。 MongoDBコミュニティー:MongoDB JP | Google グループ 【発表1】Mo
RDBMSの場合 SELECT * FROM userlog WHERE timestamp BETWEEN '2011-11-01' AND '2011-11-02' ORDER BY timestamp; Mongo Shellの場合 var query = { "timestamp" : { "$gte" : ISODate("2011-11-01T00:00:00+09:00"), "$lte" : ISODate("2011-11-02T00:00:00+09:00") } }; db.userlog.find(query).sort({timestamp:1}); 境界値を含みたくない場合は、"$gt","$lt"と書きます。 var query = { "timestamp" : { "$gt" : ISODate("2011-11-01T00:00:00+09:00"),
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く