私は盲目的に明白な何かを見逃しているに違いありません。誰かが私を恥じてください。
私は2.2Aggregationクエリを構築していますが、これはC#Linq Driverでネイティブにサポートされていないため、ドット付き表記を使用してネストされたプロパティの文字列名を構築する必要があります。私がこのような構造を持っているとしましょう。
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));
これは基本的に私が自分で書かなければならなかったものですが、それは恨みのように感じます、そして私はむしろこの方法でDBセーフフィールド名を構築する責任を維持したくありません。