更新mongodb的值为map,其中包含JAVA中带有'$'的键

时间:2014-01-26 23:27:43

标签: java mongodb

我正在尝试使用地图作为值更新mongoDB。此地图包含一个包含“$”字符的键。

我收到以下错误:

java.lang.IllegalArgumentException: fields stored in the db can't start with '$' (Bad Key: '$format')

我的代码是:

        DB db = new MongoPersistenceManagerImpl().getDB();
        DBObject q = new BasicDBObject();

        DBObject u = new BasicDBObject();
        u.put("details", details);

        DBCollection collection = db.getCollection(COLLECTION_NAME);
        WriteResult result = collection.update(q, u, true, false);

详情

private Map<String, Object> details;

“详情”地图中的一个关键字是'$',它不允许我用上面提到的错误更新mongoDB。

密钥如下:

http://example.com?$format

请提供解决此问题的指示。

1 个答案:

答案 0 :(得分:1)

$是mongodb中的运算符前缀,您有$set$in$ne等运算符... 这就是你不能在mongo db中使用以$开头的变量的原因。想一想,它怎么知道你是想要使用名为$myValue的运算符还是仅使用值$myVakue?它不能,这就是为什么你不能在java myVar()77Var中命名变量的原因。

如果您打算保存http地址,我会对其进行html编码

编辑: 顺便说一下,你的问题值不是你所说的http地址,而是它的$format,而且如错误所示,你的值$开始,你可以随时存储字符串不是以$

开头
相关问题