w3ctech

thinkjs2如何使用MongoDB中原子操作命令?

{
    "id" : 6,
    "canshu" : [ 
        {
            "a" : 1,
            "b" : "111"
        }, 
        {
            "a" : 1,
            "b" : "222"
        }, 
        {
            "a" : 1,
            "b" : "333"
        }
    ]
}

如上,要删除‘canshu’中a=1的数组对象,mongodb中支持这种操作

db.getCollection('test').update({id:6},{$pull:{'canshu':{'a':1}}})

结果:

{
    "id" : 6,
    "canshu" : [ 
        {
            "a" : 2,
            "b" : "222"
        }, 
        {
            "a" : 3,
            "b" : "333"
        }
    ]
}

在model或者控制器中直接用update加上这种语法,没报错,但是数据库里没有变动,应该如何去写呢?

w3ctech微信

扫码关注w3ctech微信公众号

共收到10条回复

  • Model 具体代码是怎么写的呢?

    回复此楼
  • this.where({id: 6}).update({$pull:{'canshu':{'a':1}}})
    

    试试这样呢?

    回复此楼
  • @老六 不行呢!之前就这样试着写的。

    回复此楼
  • 好,我试下

    回复此楼
  • 我试了下,没报错啊。麻烦提供下详细的错误信息。

    回复此楼
  • @老六 说错了说错了。没有语法报错,数据库里没有更新!

    回复此楼
  • https://github.com/75team/thinkjs2-demos/tree/master/model-mongo2.1 你下这个代码测试下

    我试了是没问题的

    回复此楼
  • 回复此楼
  • @老六 谢谢啊,我测试下!

    回复此楼
  • @老六 真的可以!太棒了。一定是我之前写错了

    回复此楼