0

私はmongooseでMongoDBをいじっていて、コレクション内のオブジェクト内の検索を実装しようとしているわずかな障害に遭遇しました。

したがって、次のようなスキーマがあります。

var schema = mongoose.Schema({ 
  form_id: Number,
  author: Number,
  data: String,
  files: String,
  date: { type: Date, default: Date.now },
});

は、キー/値のdata単なる JSON オブジェクトです。

レコードのエントリの例:

{
 "form_id" : 5, 
 "author" : 1,
 "data" : "
   {\"staff\":\"Joe Blow\", \"date\":\"25th Jan 2013\"}", 
 "_id" : ObjectId("5101fd4ee6ca550000000003"),
 "date" : ISODate("2013-01-25T03:34:38.377Z"),
 "__v" : 0
}

データ オブジェクト内の特定の値を検索するにはどうすればよいですか? 私は次のようなことをしようとしていますが、運がありません:(

db.forms.find({form_id: 5, data: '/Joe/i'});
4

2 に答える 2

2

正規表現を囲む一重引用符を省略すると、機能するはずです。

db.forms.find({form_id: 5, data: /Joe/i});

しかしdata、オブジェクトの代わりに JSON 文字列を含めてもよろしいですか? オブジェクトを使用すると、柔軟性が大幅に向上します。

于 2013-01-29T01:22:53.250 に答える
0

多分あなたはこれが欲しいですか?

db.forms.find({form_id: 5, "data.staff": /Joe/i});

フォームの「データ」プロパティがオブジェクトの場合。そしてそれはずっと良いです。

于 2013-01-29T07:31:11.653 に答える