我有以下架构:
{
_id: objectID('593f8c591aa95154cfebe612'),
name: 'test'
businesses: [
{
_id: objectID('5967bd5f1aa9515fd9cdc87f'),
likes: [objectID('595796811aa9514c862033a1'), objectID('593f8c591ba95154cfebe790')]
}
{
_id: objectID('59579ff91aa9514f600cbba6'),
likes: [objectID('693f8c554aa95154cfebe146'), objectID('193f8c591ba95154cfeber790')]
}
]
}
我需要更新“businesses.likes”,其中business._id等于中心值,而business.likes包含某些objectID。
如果数组中存在objectID,我想删除它。
这是我尝试过并且无法正常工作的原因,因为$ in正在搜索所有子文档,而不是business._id =我的值的唯一子文档:
db.col.update(
{ businesses._id: objectID('5967bd5f1aa9515fd9cdc87f'), 'businesses.likes': {$in: [objectID('193f8c591ba95154cfeber790')]}},
{$pull: {'businesses.$.likes': objectID('193f8c591ba95154cfeber790')}}
)
任何想法如何编写查询?请记住,来自不同企业的business.likes可以拥有相同的objectID。