Har*_*ara 4 mongodb mongodb-query mongodb-update
我主要担心的是在mongodb文档中他们使用$elemMatch命令进行查找并从数组中提取元素,但是当我使用时这不起作用.我的文档结构是
{
"_id" : ObjectId("55dea445c3ad8cac03a7ed8e"),
"email" : "james@user.com",
"groups" : [
{
"_id" : ObjectId("55dea4a4c3ad8c8005a7ed8f"),
"name" : "All Group"
}
]}
Run Code Online (Sandbox Code Playgroud)
我想使用mongodb查询从文档中删除组.我的查询是:
db.users.update({"_id": ObjectId('55dea445c3ad8cac03a7ed8e')},
{$pull: {"groups": {$elemMatch: {"_id": ObjectId('55dea4a4c3ad8c8005a7ed8f')}}}})
Run Code Online (Sandbox Code Playgroud)
执行查询后,用户文档未更新,组值仍然存在.我关注mongodb文档:http://docs.mongodb.org/v2.6/reference/operator/update/pull/
你不需要$elemMatch用$pull.它的参数基本上是数组本身的"查询":
db.users.update(
{"_id": ObjectId('55dea445c3ad8cac03a7ed8e')},
{ "$pull": { "groups": {"_id": ObjectId('55dea4a4c3ad8c8005a7ed8f')}}}
)
Run Code Online (Sandbox Code Playgroud)
因此,在查询中$pull工作的方式非常多$elemMatch,其中自己的参数被视为数组的子文档元素中的查询.
它正在查看各个数组元素,而不像文档中查看整个数组的"查询"部分.
| 归档时间: |
|
| 查看次数: |
2821 次 |
| 最近记录: |