具有更新查询的MongoDB Stich Sync在Android中不起作用

时间:2018-11-23 04:58:16

标签: android mongodb

    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

1 个答案:

答案 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)来更新数据。 一定会工作的。谢谢。