小编bru*_*rud的帖子

MongoDB:更新"$ unset"的修饰符语义

在MongoDB中,更新修饰符unset的工作方式如下:

考虑具有集合用户的Mongo DB数据库db.用户包含以下格式的Document:

//Document for a user with username: joe
{
    "_id" : ObjectId("4df5b9cf9f9a92b1584fff16"),
    "relationships" : {
            "enemies" : 2,
            "friends" : 33,
            "terminated" : "many"
    },
    "username" : "joe"
}
Run Code Online (Sandbox Code Playgroud)

如果我想删除已终止的密钥,我必须指定$ unset update修饰符,如下所示:

>db.users.update({"username":"joe"},{"$unset":{"relationships.terminated": "many"}});
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么我必须为$ unset 指定整个键值对,而不是简单地指定:

>db.users.update({"username":"joe"},{"$unset":{"relationships.terminated"}});

Mon Jun 13 13:25:57 SyntaxError: missing : after property id (shell):1
Run Code Online (Sandbox Code Playgroud)

为什么不?

编辑:

如果$ unset的方法是根据JSON规范指定整个键值对,或者在语句中添加"1"作为值,为什么Shell本身不能进行"1"替换?为什么不提供这样的功能?是否存在提供此类支持的陷阱?

language-agnostic json mongodb unset semantics

5
推荐指数
1
解决办法
7618
查看次数

Vaadin:如何在TabSheet中迭代Tabs?

在Vaadin中,我必须根据其名称在TabSheet中找到一个Tab.

如何迭代选项卡中的选项卡来完成此操作?

java user-interface vaadin

3
推荐指数
1
解决办法
5900
查看次数