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



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

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

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

和查询字符串为"value1"将返回两个文档。

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

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

拥有一组无限制的字段名可能表明您的模式需要重新设计。您是否考虑过将动态字段名改为嵌入对象的值?如:

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

那么你的查询将看起来像:

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

最新更新