0

データベースに次のドキュメントがあるとします。

{"_id":"test", "with space":{"a name":1}}

Casbahで$setクエリを記述して、「withspace」。「aname」を2に更新するにはどうすればよいですか。

私は次のようなことを考えていました。

collection.update(MongoDBObject("_id" -> "test"), "'with space'.'a name'" $set 2)

しかし、フィールド名が不明で、実行時にそれらを作成する必要がある場合はどうなりますか?安全な方法でそれらを「エスケープ」する方法はありますか?(たとえば、それらのいずれかに一重引用符が含まれている場合など)

4

2 に答える 2

3

フィールド名にスペースを入れないのはどうですか。真剣に。

さて、あなたが本当にしなければならないなら、それは逃げることなくうまくいくはずです...

collection.update(MongoDBObject("_id" -> "test"), $set ("with space.a name" -> 2))
于 2012-09-16T21:25:22.077 に答える
2

MongoDBに必要な明示的なエスケープはありません。変数名を渡すだけです。例:

 val key = MongoDBObject(name + '.' + embeddedname -> "somevalue")

また

 val key = MongoDBObject("with space.a name" -> "somevalue")

MongoDBでは、「。」以外のキー名に有効なUTF-8文字を使用できます。先頭に「$」を付けると、通常、英数字のキー名とアンダースコアを使用するのが最適です。

ユーザー提供の入力の安全性について懸念がある場合は、MongoDBがSQLまたはクエリインジェクションにどのように対処するかを参照してください。

于 2012-09-16T23:52:09.487 に答える