質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

5748閲覧

Mongooseでオブジェクトの中のオブジェクト内を検索

RayNavarro

総合スコア18

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2016/08/19 10:25

MongoDBにこういうデータがあります。

json

1{ 2 "name": "hoge様", 3 "pass": "hogehoge", 4 "id": "hogehoge", 5 "age": "20", 6 "profile": "学生です!w", 7 "friend": [ 8 "hoge1", 9 "hoge2", 10 "hoge3" 11 ], 12 "pin": { 13 "comment": "コメントです", 14 "ido": "1.1", 15 "keido": "2.2", 16 "date": "2016-08-19T18:25:45.663Z" 17 } 18}

pinの中のcommentでfindしたいのですが上手く行きません

javascript

1var Schema = mongoose.Schema; 2var userSchema = new Schema({ 3 id: String, 4 pass: String, 5 name: String, 6 age: String, 7 profile: String, 8 image: String, 9 friend: [], 10 pin:{ 11 comment: String, 12 ido: String, 13 keido: String, 14 date: String 15 } 16}, { 17 versionKey: false // You should be aware of the outcome after set to false 18}); 19var User = mongoose.model("users", userSchema); 20 21User.find( {pin: {comment:"コメントです"}} ,{id: 1,name: 1,pin: 1,_id: 0}, function( err, docs ){ 22 console.log(JSON.stringify(docs)); 23},this);

だれかやり方が分かる人いたら教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

node.js初心者で興味があったので調べてみました。公式ドキュメントをチラ見しても、
日本語で検索してみてもよく分からず。「node.js mongoose find nested」で検索してみたところ、
以下のstackoverflowのトピックが見つかりました。

Querying nested documents using Mongoose (MongoDB)
http://stackoverflow.com/questions/13097266/querying-nested-documents-using-mongoose-mongodb

検索条件にネストした項目を指定する場合は、キー名をドットでつなげて
ダブルクォーテーション(クォーテーション)で囲えばいいようです。

{"pin.comment": "コメントです"}


質問文の例だとどうも、pin === {comment:"コメントです"}という判定をされるみたいです。
次のような定義で試したところ、metaの片側を指定するとヒットしないのですが、
両方きっちり指定してやると対象データを取得できました。

javascript

1var User = new Schema({ 2 name: String, 3 meta: { 4 hoge: String, 5 fuga: String 6 } 7}

投稿2016/08/19 11:38

nnssn

総合スコア1221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RayNavarro

2016/08/20 00:33

できました! pin.commentでも試していたのですが ダブルクォーテーションをつけるとは思いませんでした! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問