我在数据库中存在一个集合“ documentDev”,其中的分片键为“ dNumber”示例文档:
{
"_id" : "12831221wadaee23",
"dNumber" : "115",
"processed": false
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用以下命令通过任何查询工具来更新此文档:
db.documentDev.update({
"_id" : ObjectId("12831221wadaee23"),
"dNumber":"115"
},{
$set:{"processed": true}},
{ multi: false, upsert: false}
)}`
Run Code Online (Sandbox Code Playgroud)
它将正确更新文档。但是如果我确实使用Spring Boot的mongorepository命令(例如DocumentRepo.save(Object)),则会引发异常
- 引起原因:com.mongodb.MongoCommandException:命令失败,错误61:服务器上的查询“命令查询必须以单个分片键为目标” by3prdddc01-docdb-3.documents.azure.com:10255。完整的响应为{“ _t”:“ OKMongoResponse”,“ ok”:0,“代码”:61,“ errmsg”:“命令中的查询必须以单个分片键为目标”,“ $ err”:“命令中的查询必须以单个分片键为目标。“}
这是我的DocumentObject:
@Document(collection = "documentDev")
public class DocumentDev
{
@Id
private String id;
private String dNumber;
private String fileName;
private boolean processed;
}
Run Code Online (Sandbox Code Playgroud)
这是我的存储库类-
@Repository
public interface DocumentRepo extends MongoRepository<DocumentDev,
String> { }
Run Code Online (Sandbox Code Playgroud)
和价值,我试图更新
- 值:doc:{“ _ id”:“ 12831221wadaee23”,“ dNumber”:“ 115”,“已处理”:true}
我正在尝试执行的功能:
@Autowired
DocumentRepo …Run Code Online (Sandbox Code Playgroud)