NutzCN Logo
问答 大佬nutz中mongodb的更新方法是哪个?只是想更新一个文档内容
发布于 85天前 作者 wx_87hijf2re2akv9hr9ocn 170 次浏览 复制 上一个帖子 下一个帖子
标签:

大佬能不能提供一个两个monogodb的更新的例子。
public WriteResult update(ZMoDoc q, ZMoDoc o) {
if (log.isDebugEnabled())
log.debug(log_format("update", q, o));
return dbc.update(q, o);
}
传入的这两个参数指的是?

16 回复

和mongodb的控制台一样传入名值对呗。

来自炫酷的 NutzCN

return dbc.update(q, o); @zozoh 参数q和o分别代表什么意思?query : update的查询条件,类似sql update查询内where后面的。o代表要更新的文档对象?第一次用mongodb不太懂

还是需要看看mongodb的手册的。。。ZMoDoc有很多帮助方法

大佬@wendal mongodb的方法中的WriteResult类的 private final Object upsertedId;哪个方法是保存后能取到保存的主键id,求大佬赐教

你指的主键是ObjectId吧?事实上ObjectId是客户端生成的

大佬@wendal ,我知道是自动生成的,nutz集成的方法中有没有保存可以返回这个objectId的

在原对象里面就有吧,你当前的语句是怎样的?

 WriteResult result = zMoCoNewApply.insert(ZMo.me().toDocArray(saveNewApplyDTO));

我想把saveNewApplyDTO这个对象保存进去之后,然后再取到objdectId存到oracle数据库@wendal

大佬@wendal 我断点跟了saveNewApplyDTO这个对象中@Id _id 这个字段还是为null,已经保存到monodb了,是不是我哪里写错

话说, WriteResult就有getUpsertedId哦

ZMoDoc doc = ZMo.me().toDoc(saveNewApplyDTO);
WriteResult result = zMoCoNewApply.insert();
Object re = result.getUpsertedId();
log.info(""+re);
log.info(""+doc);

@wendal 我看断点显示getUpsertedId为null,但是monogodb里确实存进去了。

doc里面有吗, 按我的写法, insert(doc)的方式

@wendal 兽总,ZMo.me().toDoc(saveNewApplyDTO);这个方法报错,
java.lang.RuntimeException: Array can not toDoc : [Lcom.wonders.biz.fl.fljg.jggl.slxk.model.SaveNewApplyDTO;
at org.nutz.lang.Lang.makeThrow(Lang.java:132)
at org.nutz.mongo.ZMo.toDoc(ZMo.java:81)
对传入的对象有要求吗?

public class SaveNewApplyDTO {

    private String _id;

    private String mongoDbId;

    private String  orgBaseId ;//'申请书主键ID';

    private String  applyId ;//'业务申请ID,外键到 DFJG_SLXK_APPLY.ID';

这个对象这么样写有问题吗?

哦, 原来你insert数组啊...

ZMoDoc[] docs = ZMo.me().toDocArray(saveNewApplyDTO);
WriteResult result = zMoCoNewApply.insert(docs);

然后docs里面的对象应该有id的

@wendal 非常感谢兽总,我只是想到是对象,没想到数组。非常感谢

添加回复
请先登陆
回到顶部