1

我正在调用 jongo 的 mongoCollection.insert(String query) 方法,以便将 JSON 插入集合中。JSON 在字段值中包含 # 字符。但由于 # 用作查询参数标记指示符,我最终会收到解析错误,并显示“传递给查询的参数不足”消息。

如何保存包含 # 字符的动态 JSON 字符串(请注意,我不知道 JSON 的结构或架构)

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

“test val#1”只是用户输入的字符串值。我不想对每个字段值进行编码,在我的情况下它甚至可能是不可能的。请让我知道是否有解决方法。

谢谢

4

2 回答 2

0

我有相同的 pb,我通过复制 org.jongo.marshall.mapper.JacksonMapper 但将第 60 行更改为:

queryFactory = new BsonQueryFactory(jacksonEngine, "#|#");

其中 #|# 是我的新模式...

然后我做:

Mapper jm = new JacksonMapperCustom.Builder().build();
Jongo jongo = new Jongo(db, jm);

而且效果很好!

于 2015-01-24T10:42:12.190 回答
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 回答