2013-01-29 3 views
0

Я играю с 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

Если опустить одиночные кавычки регулярное выражение должно работать:

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

Но вы уверены, хочу data содержать строку JSON вместо объекта? объект даст вам гораздо больше гибкости.

0

может быть, вы хотите это?

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

если ваше свойство data является формой. и это лучше.

Смежные вопросы