Node.js 节点mongodb本机按DBRef$id删除(dot问题)
我的mongodb数据库中有两个集合: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
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,如上所述。您是否可以编辑您的问题以包含失败的节点代码?这两个集合的任何示例数据?如果要删除数组中的元素,应该查看操作符。