1

JSON をコレクションに挿入するために、jongo の mongoCollection.insert(String query) メソッドを呼び出しています。JSON のフィールド値に # 文字が含まれています。しかし、# はクエリ パラメーター トークン インジケーターとして使用されるため、「クエリに十分なパラメーターが渡されていません」というメッセージで解析エラーが発生します。

# 文字を含む動的 JSON 文字列 (JSON の構造やスキーマがわからないことに注意してください) を保存するにはどうすればよいですか?

例: { "order_id":"123445", "order_name":"test val#1" }

「test val#1」は、ユーザーが入力した単なる文字列値です。すべてのフィールド値をエンコードしたくありません。私の場合、それは不可能かもしれません。回避策があれば教えてください。

ありがとう

4

2 に答える 2

0

カスタム BsonQueryFactory をインスタンス化することで、Jongo が使用するトークンを構成できます。ただし、このトークンはアプリケーション内のすべてのクエリに使用されます。

単一のクエリのトークンを変更するだけの場合は、パラメーターとして「#」を使用して文字列を渡すことができます。

@Test
public void canFindAndInsertWithHash() throws Exception {

    collection.insert("{name:#}", "test val#1");

    Friend friend = collection.findOne("{name:#}", "test val#1").as(Friend.class);

    assertThat(friend).isNotNull();
    assertThat(friend.getName()).isEqualTo("test val#1");
}
于 2014-10-15T12:39:15.807 に答える