我的mongodb数据库中有2个集合:users
和posts
。
在posts
集合中,我有这样的DBRef字段:
user : DBRef('users', ObjectId('...'), null)
当我要按用户ID删除某些帖子时,我会执行以下操作:
db.posts.remove({ 'user.$id' : ObjectId('...') })
它工作得很好,但不是来自node-mongodb-native。来自node-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);
});
});
答案 0 :(得分:0)
我使用了类似的模型,但我的帖子来自一位用户,只是简单地说:
db.posts.remove({'user_id' : ObjectID('...') });
在这种情况下,看起来更像是集合帖子中有一个带有id的数组用户。
如果我没弄错的话,你应该使用用户数组中的$来为匹配后的数组中的元素做一些事情。
如果你的目的是移除整个帖子,只需通过匹配users数组中的id删除它:
db.posts.remove({user:{$in:ObjectID('...'}});
否则,$ pull,如上所述。