我一定遗漏了一些非常明显的东西。有人请羞辱我;
我正在构建 2.2 聚合查询,C# Linq 驱动程序本身并不支持这些查询,因此我必须使用点分表示法为嵌套属性构建字符串化名称。假设我有这样的结构;
db.so.insert({
a:1,
b:2,
n : {
z:4,
x:5,
y: {
v:"value",
}
}
});
因此,要引用“值”,我需要使用名称n.y.v
或n[y][v]
. 现在,由于我从 Web 客户端 ( http://www.demo.org/exampleQuery?field1=n&field2=y&field3=v
) 接收查询的字段属性名称选择,因此我需要构造属性名称;
var fieldNameForQuery = field1+"."+field2+"."+field3;
我显然对此感到紧张,所以我当然会通过清理我的输入参数来防御 NOSQL 注入,但我更愿意为此使用 C# 驱动程序。
我想我想要类似的东西;
MongoDB.Driver.BuildNestedFieldName(field1, field2, field3));
这基本上是我必须自己编写的,但感觉就像是一个杂物,我宁愿不承担以这种方式构建数据库安全字段名称的责任。