在mongo集合中的对象内搜索

时间:2013-01-29 01:07:46

标签: node.js mongodb mongoose

我正在使用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'});

2 个答案:

答案 0 :(得分:2)

如果省略正则表达式周围的单引号,它应该起作用:

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

但是您确定要data包含JSON字符串而不是对象吗?一个对象会给你更大的灵活性。

答案 1 :(得分:0)

也许你想要这个?

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

如果表单的“数据”属性是对象。而且它的方式更好。