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 回答