Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何从文档中删除字段_Mongodb_Meteor - Fatal编程技术网

Mongodb 如何从文档中删除字段

Mongodb 如何从文档中删除字段,mongodb,meteor,Mongodb,Meteor,数据库架构: { _id: "kun2", result150160: [10,20,30]; moon: 4 } 我想通过客户端使用变量删除整个字段result150160: var deleteresult = "result150160" Box.update( {_id: this._id} , {$unset: { deleteresult } } ); 你可以做: var deleteresult = {}; deleteresult["result150

数据库架构:

{
    _id: "kun2",
    result150160: [10,20,30];
    moon: 4
}
我想通过客户端使用变量删除整个字段result150160:

var deleteresult = "result150160"
Box.update( {_id: this._id} , {$unset: { deleteresult } } );
你可以做:

var deleteresult = {};
deleteresult["result150160"] = true
Box.update( {_id: this._id} , {$unset: deleteresult } );

基本上,您必须使用键值对,对于
true
,您使用什么并不重要,只要其中有一些内容。

正确的语法如下:

Box.update( {_id: this._id} , {$unset: { deleteresult : "" } } );
您必须为
$unset
操作指定一个值:
{deleteresult:}
。即使它是空的

签出:

db.collection.update({field:value1},{$unset:{field1::})
上面的示例从字段值为value1的文档中删除集合中的字段1。$unset语句中字段的值(即上面的“”)不会影响操作


试试这个,它应该适合你:

var deleteresult = "result150160";    
var updateQuery={$unset:{}};   
updateQuery.$unset[deleteresult]=1;   
Box.update( {_id: this._id} ,updateQuery,false,true);

这不起作用,我也不希望在查询中使用字符串,因为result150160是一个示例,也可能是另一个字符串:)我稍微修改了语法,您可以在适当的位置使用任何字符串。还请检查您的javascript控制台,因为它可能是导致它无法工作的其他原因(
.allow
权限或没有正确输入
\u id
)我在几分钟前测试了您的语法,但它无法工作。这是正确的语法使用方法-您可以从我包含的文档链接中看到。您确定问题不在代码的其他地方吗?
Box
是否实际引用了一个集合?
\u id
属性正确吗?@sebastian您是否尝试在meteor mongo控制台中运行该命令。如果它能工作,那么你就是被破坏的代码。从今天起,这个问题似乎在Meteor中持续存在。我在代码中尝试了$unset,但没有成功。我必须使用更新将字段更改为false,这在我的案例中表示为取消设置字段,并且工作正常。