在任何字段中查找包含搜索字符串的文档

时间:2013-05-03 18:55:15

标签: mongodb mongodb-.net-driver

我试图找到让MongoDb在所有文档字段中查找特定值的最佳方法。例如,如果我有两个文件:

{
    field1: "value1"
    field2: "value2"
}

{
    field3: "value3"
    field4: "value1"
}

,查询字符串为" value1"这两份文件都将被退回。

如果在MongoDb中无法做到这一点,那么在数据库或代码级别实现它的最佳策略是什么?我试图在C#中创建一个getter,它迭代所有映射的实体的属性并返回一个数组并将这个数组存储在数据库中,但IMO是低效且难看的解决方案。

1 个答案:

答案 0 :(得分:1)

在MongoDB中没有办法直接这样做。

拥有一组无限制的字段名称可能是您的架构需要重新处理的标志。您是否考虑过将动态字段名称设为嵌入对象的值?如:

fields: [{name: "field1", value: "value1"}, {name: "field2", value: "value2"}]

然后您的查询将如下所示:

db.coll.find({'fields.value': 'value1'});