哪位大神知道Mongoose能否进行字段的拼接 或者 对字段进行运算?
发布于 2年前 作者 shinka 1200 次浏览

如题,还是只能用mongodb native的方案? 关于mongodb native有没有啥好的学习资料? 谢谢~

12 回复

可以的,有类似leftjoin的操作的,字段运算用group或者mapreduce

大神你来啦 好的 我这就去查查并试一下 谢啦~

@shinka 问题不是很明确,最好详细点。 字段拼接看你是要做什么,如果你是想把firstname和lastname拼接在一起又不存入数据库,可以使用虚拟属性,字段运算没研究过,举个例子我学习一下吧

很明显是不行的啦,因为mongodb本身是不支持join查询的

@a272121742 领导想办到的是 在查询数据的时候对数据进行运算 比如查询成绩*0.01 然后最好能由用户指定collection 由用户指定字段等

楼主是想这样吧?update table set field1 = field2 + filed1。 如果是这样,好像是不行的,只有find后一个个更新

@shinka 你是指这个运算啊 1.如果你想做到查询中采用运算做判断条件,可以使用Model.$where(),里面传入一个mongodb的操作语句即可,但是这只是查询的条件,例如Model.$where('this.age > 18');就是查询年龄超过18岁的。 2.如果你要做的是将查询出来的结果做运算,可以采用虚拟属性,例如数据库中存储的性别是1、2,取出来的时候可以设置虚拟属性getSex,让1变为男,2变为女,同样虚拟属性可以反向设置。

还想在find的同时对find出来的结果做算术运算 比如find({"name": name}, {"score/10"}) 可能这个例子写得不好 但是想要那种效果 也谢谢你的解答

@a272121742 反向设置是啥意思? 虚拟属性我记得好像得一开始就建立在Schema中的吧 还是说动态去添加一个所需的虚拟属性用完后删除? 期待你的回复 非常感谢~

@shinka 1.虚拟属性是不存入数据库的,因此可以设置一个虚拟属性,从数据库获得一个真实属性,然后将其变为虚拟属性来显示。例如数据库存储sex为1和2,这对于数据库来说是真实属性,但是我们需要存取的是‘男’和’女’,我们可以设置虚拟属性或者get方法,让提取出来的数据按照我们的约定去显示。2.虚拟属性虽然不存入数据库,但也有方法能影响数据库,比如新增一条数据包含sex=‘男’,显然这是无法存入数据库的,可以设置set方法让’男’变成1即可。

@shinka 里面提供了很多很神奇的api,很多我也没看过,映像中你这个是可以实现的。

@a272121742 虚拟属性这么强大啊 有时间了得去好好研究研究 现在在整mocha单元测试 头疼啊 老是路径报错

回到顶部