在MongoDB中搜索数组匹配

时间:2014-08-15 03:09:56

标签: node.js mongodb mongodb-query database

我在Mongo DB中有这样的架构:

MAIN:

    var mySchema= new mongoose.Schema({
    username: { type: String, unique: true },
    custom_schema: [mongoose.modelSchemas.Custom]
    });
app.db.model('Main', mySchema);

我的自定义架构如下所示:

    var custom_schema = new mongoose.Schema({
        my_string:{type:String, default: '' },
        somefield: {
         //
        }
      });
app.db.model('Custom', custom_Schema);

我需要从数据库中检索所有记录,其custom_schema包含字符串my_string中的特定字符串。

我现在正在这样做:

var filters = {};
  filters.somefield=new RegExp('^.*?'+city+'.*$', 'i');

  req.app.db.models.Main.pagedFind({
    filters: filters,
    keys: 'mykeys',
    limit: 1000,
    page: 1,
    sort: '_by something'
  }, function(err, results) {
    if (err) {
      return next(err);
    }
  });

如何添加过滤器以搜索custom_Schema数组中的特定字符串?

1 个答案:

答案 0 :(得分:1)

要在mongodb中搜索对象内部,您需要使用与常规对象object.var中相同的指令,因此您的过滤器应该看起来像filters['custom_schema.somefield'] = ...