Node.js 节点mongodb本机按DBRef$id删除(dot问题)

Node.js 节点mongodb本机按DBRef$id删除(dot问题),node.js,mongodb,node-mongodb-native,Node.js,Mongodb,Node Mongodb Native,我的mongodb数据库中有两个集合:users和posts。 在posts集合中,我有如下DBRef字段: user : DBRef('users', ObjectId('...'), null) 当我要按用户id删除某些帖子时,我会执行以下操作: db.posts.remove({ 'user.$id' : ObjectId('...') }) 它工作得很好,但不是来自节点mongodb native。在执行此请求时,我从节点mongodb native收到以下错误: key must

我的mongodb数据库中有两个集合:
users
posts
。 在
posts
集合中,我有如下DBRef字段:

user : DBRef('users', ObjectId('...'), null)
当我要按用户id删除某些帖子时,我会执行以下操作:

db.posts.remove({ 'user.$id' : ObjectId('...') })
它工作得很好,但不是来自节点mongodb native。在执行此请求时,我从节点mongodb native收到以下错误:

key must not contain '.'
有人能看到吗?如果我在某件事上错了,谢谢你的帮助和解释

更新

通过DBRef$id查找请求工作正常

Node.js代码:

var mongodb = require('mongodb')
  , nconf = require('nconf')
  , MongoClient = mongodb.MongoClient;

MongoClient.connect(nconf.get('db:connectionString'), function(mongoConnectionError, db) {
  if (mongoConnectionError) throw mongoConnectionError;

  db
    .collection('posts')
    .remove({ 'user.$id' : new mongodb.ObjectID('...') }, {}, function(err, removedItems) {
      if (err) { throw err; }

      console.log('Removed items: ' + removedItems);
    });
 });

我曾使用过类似的模型,但我的帖子来自一个用户,因此很简单:

db.posts.remove({'user_id' : ObjectID('...') });
在本例中,看起来更像是集合POST中有一个id为的数组用户

如果我没有弄错的话,您应该在匹配后使用用户数组中的$对数组中的元素执行某些操作

如果您的目的是删除整个帖子,只需通过匹配用户数组中的id将其删除:

db.posts.remove({user:{$in:ObjectID('...'}});

否则,$pull,如上所述。

您是否可以编辑您的问题以包含失败的节点代码?这两个集合的任何示例数据?如果要删除数组中的元素,应该查看操作符。