我正在使用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'});
答案 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});
如果表单的“数据”属性是对象。而且它的方式更好。