如何在mongoDB中保存此JSON?

时间:2015-04-07 13:46:10

标签: java json mongodb jongo

我需要保存此JSON:{edbff2886c8ca7aa1bd02b092aa03930.zip=T001.zip}。它来自Map<String,String>。为什么不可能?

com.mongodb.WriteConcernException: { "serverUsed" : "127.0.0.1:27017" , "ok" : 1 , "n" : 0 , "updatedExisting" : false , "err" : "The dotted field 'edbff2886c8ca7aa1bd02b092aa03930.zip' in 'filenameMap.edbff2886c8ca7aa1bd02b092aa03930.zip' is not valid for storage." , "code" : 57}

查询

public Validacao update(String id, Validacao validacao) {
        mongoCollection.update("{_id : #}", id)
                .with("{$set: #}", validacao);
        return validacao;
}

1 个答案:

答案 0 :(得分:1)

此:

 {edbff2886c8ca7aa1bd02b092aa03930.zip=T001.zip}

开始时不是有效的JSON。您需要围绕字段名称和值进行引用。

然而,即使这样也不够。来自MongoDB documentation

  

字段名称不能包含点(即。)或空字符,并且它们不能以美元符号(即$)开头。有关替代方法,请参阅Dollar Sign Operator Escaping

现在,根据您的字段名称可能包含的其他字符,您可能会在存储之前用其他内容替换所有点 - 或者您可能需要某种转义机制。