MongoDb拉位置运算符

时间:2014-10-11 22:03:57

标签: mongodb

我有一个文件的结构

{
 _id: 12342342
 items: [
   {
      ownerId: 123,
      dates: ['2014-10-01', '2014-10-02']
   },
   {
      ownerId: 234,
      dates: ['2014-10-01', '2014-10-02']
   },

 ]
}

我想从父对象的ownerId为特定值的日期中提取特定值。

我有

   var myDate = '2014-10-01'
   db.collection('things').update({'items.dates': {$in: [myDate]}}, 
      {$pull: { 'items.$.dates': myDate } }, {multi: true});

但这会拉动任何ownerId,这不是我想要的。有人可以帮助我获得正确的查询语法吗?

谢谢。

1 个答案:

答案 0 :(得分:4)

如果你想在特定的 ownerId ,你需要在更新的查询部分指定 ownerId 强>方法。这是一个参考:

var myDate = '2014-10-01';
var ownerId = 123;

db.things.update({
    'items' : {
        '$elemMatch' : {
            ownerId : ownerId,
            dates : {
                $in : [ myDate ]
            }
        }
    }
}, {
    $pull : {
        'items.$.dates' : myDate
    }
}, {
    multi : true
});

实际上,此处不需要运营商 $ in

var myDate = '2014-10-01';
var ownerId = 123;

db.things.update({
    'items' : {
        '$elemMatch' : {
            ownerId : ownerId,
            dates : myDate
        }
    }
}, {
    $pull : {
        'items.$.dates' : myDate
    }
}, {
    multi : true
});