MongoDB $pull 查询不删除和更新现有记录
MongoDB $pull query not remove and update the existing record
我主要担心的是 mongodb 文档中他们使用 $elemMatch
命令从数组中查找和拉取元素,但是当我使用时这不起作用。
我的文件结构是
{
"_id" : ObjectId("55dea445c3ad8cac03a7ed8e"),
"email" : "james@user.com",
"groups" : [
{
"_id" : ObjectId("55dea4a4c3ad8c8005a7ed8f"),
"name" : "All Group"
}
]}
我想使用 mongodb 查询从文档中删除组。我的查询是:
db.users.update({"_id": ObjectId('55dea445c3ad8cac03a7ed8e')},
{$pull: {"groups": {$elemMatch: {"_id": ObjectId('55dea4a4c3ad8c8005a7ed8f')}}}})
执行查询后,用户文档没有更新,组值仍然存在。我正在关注 mongodb 文档:http://docs.mongodb.org/v2.6/reference/operator/update/pull/
您不需要 $elemMatch
和 $pull
。它的参数基本上是数组本身的 "query":
db.users.update(
{"_id": ObjectId('55dea445c3ad8cac03a7ed8e')},
{ "$pull": { "groups": {"_id": ObjectId('55dea4a4c3ad8c8005a7ed8f')}}}
)
所以 $pull
的工作方式与 $elemMatch
在查询中的工作方式非常相似,它自己的参数在数组的子文档元素中被视为查询。
它已经在查看单个数组元素,这与文档中查看整个数组的 "query" 部分不同。
我主要担心的是 mongodb 文档中他们使用 $elemMatch
命令从数组中查找和拉取元素,但是当我使用时这不起作用。
我的文件结构是
{
"_id" : ObjectId("55dea445c3ad8cac03a7ed8e"),
"email" : "james@user.com",
"groups" : [
{
"_id" : ObjectId("55dea4a4c3ad8c8005a7ed8f"),
"name" : "All Group"
}
]}
我想使用 mongodb 查询从文档中删除组。我的查询是:
db.users.update({"_id": ObjectId('55dea445c3ad8cac03a7ed8e')},
{$pull: {"groups": {$elemMatch: {"_id": ObjectId('55dea4a4c3ad8c8005a7ed8f')}}}})
执行查询后,用户文档没有更新,组值仍然存在。我正在关注 mongodb 文档:http://docs.mongodb.org/v2.6/reference/operator/update/pull/
您不需要 $elemMatch
和 $pull
。它的参数基本上是数组本身的 "query":
db.users.update(
{"_id": ObjectId('55dea445c3ad8cac03a7ed8e')},
{ "$pull": { "groups": {"_id": ObjectId('55dea4a4c3ad8c8005a7ed8f')}}}
)
所以 $pull
的工作方式与 $elemMatch
在查询中的工作方式非常相似,它自己的参数在数组的子文档元素中被视为查询。
它已经在查看单个数组元素,这与文档中查看整个数组的 "query" 部分不同。