Document filter = new Document();
filter.put("text", "hii");
Document update = new Document();
update.put("text", "prakash");
update.put("owner_id", _client.getAuth().getUser().getId());
update.put("checked", false);
Task<SyncUpdateResult> res=getItemsCollection().sync().updateMany(filter, update);
res.addOnCompleteListener(new OnCompleteListener<SyncUpdateResult>() {
@Override
public void onComplete(@android.support.annotation.NonNull Task<SyncUpdateResult> task) {
}
});
以上代码用于从Android设备使用Sync选项更新MongoDB地图集记录(意味着如果互联网可用,则应用会将数据同步到mongodb云) 我使用了“同步删除”,“同步插入”功能,但是如果我尝试“同步更新”,则无法正常工作 如果有人知道同步更新有什么问题
发生错误,例如无效的BSON字段名称nae
答案 0 :(得分:0)
我通过下面的objectId通过查询解决了上述问题。
String datas=data_val.getText().toString();
final Document query = new Document();
query.put("_id", objectId);
final Document set = new Document();
set.append("text", datas);
set.put("owner_id", _client.getAuth().getUser().getId());
set.put("checked", true);
Log.d("Data4455",""+objectId);
final Document update = new Document();
update.put("$set", set);
remoteCollection.sync().updateOne(query,update,new SyncUpdateOptions().upsert(true)).addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@android.support.annotation.NonNull Task task) {
if(task.isSuccessful()) {
Toast.makeText(MainActivity.this, "update", Toast.LENGTH_SHORT).show();
findData();
}
else
Log.d("Data4455","error"+" "+task.getException().getMessage());
}
});
第一个文档是使用“ _id”查询要在mongoDB中更新的特定记录,我得到了从mongoDB中检索到的“ objectId”。
第二个文档定义了您要在mongoDB中更新的值。
第三文档集更新文档。
最后调用remoteCollection.sync()。updateOne(query,update)来更新数据。 一定会工作的。谢谢。