所以问题是我在一个和数组中嵌套了相关集合中不再存在的对象。搜索的集合(用户)看起来像
{
"_id" : id,
"locations" : [
{
"_id" : id,
"name" : name
}
]
}
数组相关的集合(位置)看起来像。
{
"_id" : id,
"name" : name, ..........
}
所以我正在运行一个地图函数来获取地图中的所有 id 和 name 以将字段减少到我想要使用的字段
vals = db.locations.find({},{
name : 1,_id : 1}).map(function(a){
return {
name : a.name,_id : a._id
};
})
接下来我想运行一个类似这样的更新
db.users.update({
"locations" : {
"name" : {$nin : vals.name},
"_id" : {$nin : vals._id}}}, {
"$pull" : {
"array" : {
"name" : {$nin : vals.name},
"_id" : {$nin : vals._id }}}},
{ upsert: false, multi: true
})
但我不确定如何做到这一点,或者是否有可能。