
コレクション間に親子関係を持たせてデータを管理できる機能のサブドキュメント。
例)
・familyコレクションのサブドキュメントとして"children"ドキュメントを持つ。
"father" : "ジョンお父さん" "mother" : "キャサリング母さん" "children" : [ "name" : "イチロウ", "sex" : "男"] [ "name" : "花子", "sex" : "女"]
[目次]
複数データの一括挿入
フォーム(例:nameがcomment[])で取得したデータを挿入
//Dataというモデルがあるとする var newData = new Data(); // フォーム name = titleの値を挿入 newData.title = req.body.title; req.body.comment.forEach(function(entry) { //フォーム comment[]の値の分だけpush newData.comment.push({ comment_title : entry }); }); //DBに保存 newData.save(function(err,newData,count){ if(err) return next(err); });
組み込みドキュメントの一覧取得
組み込みドキュメントの内容をループ処理する場合。foreachを使うとうまくいかなず、"has no method"となる。forを使う必要があるようだ。
foreachを使った場合
[プログラム] data[0].member.foreach(function(entry) { console.log(entry); }); [結果] /vagrant/chat/routes/controller.js:616 data[0].member.foreach(function(entry) { ^ TypeError: Object { 組み込みドキュメントの内容 } has no method 'foreach'
forを使った場合
for(i=0;i<chat_data[0].member.length;i++){ console.log(chat_data[0].member[i].email); }
組み込みドキュメント一括削除
_idがidのドキュメント内の組み込みドキュメントcommetを一括削除
Data.update( {"_id":id}, { 'comment' :[] }, function(err){ console.log(err); } );
組み込みドキュメント内検索(完全一致・部分一致)
articleが親コレクションで、commentコレクションが子とする。commentに"hello"のものを検索
例:articleはsubject、content、commentを持ち、commentはtextを持つとする。
//完全一致 article.find( { 'comment.text': 'hello' }, function(err, data){ console.log(data); )} //部分一致 var re = new RegExp('hello', 'i'); article.find( { 'comment.text': { $regex: re } }, function(err, data){ console.log(data); )}
参考

- 作者: 小笠原徳彦
- 出版社/メーカー: 工学社
- 発売日: 2016/07
- メディア: 単行本
- この商品を含むブログ (1件) を見る