java - 使用 Map 值更新 mongodb,该值包含 JAVA 中 '$' 的键

标签 java mongodb

我正在尝试使用 map 作为值来更新 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。

key 如下所示:

http://example.com?$format

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

最佳答案

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

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

编辑: 顺便说一句,您的有问题的值不是您所说的http地址,而是它的$format,并且正如错误所示,您的值$开头 ,您始终可以存储不以 $

开头的字符串

关于java - 使用 Map 值更新 mongodb,该值包含 JAVA 中 '$' 的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21370657/

相关文章:

java - Swing 覆盖对象的 paintComponent

javascript - 如何使用 mongoose 填充嵌套在数组对象中的引用?

javascript - 类型错误 : 'undefined' is not a function when using mongoDB sort operator

Java - 哪一种是用于预订系统的最佳锁定方法

java - 节省定时器时间并在 onResume 上恢复

php - 当在 Doctrine MongoDB 中删除该对象时,我该如何删除对该对象的任何引用?

java - MongoDB:使用 JavaDriver 通过 _id 干净地查询对象

javascript - MongoDB 文档已添加但未显示在网站上(无需刷新)

java - hibernate Java 10

java - hibernate session 范围