我正试图找到使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'});