我成功使用其他字段删除文档但无法使用"_id"字段删除.PHP页面说id应该是一个字符串(默认情况下是这样),但我想要做的是,给出一个我自己的id是一个整数,并且我正在做以下事情:
这是我的文档结构:
$document = array (
'_id' => new MongoInt32(1),
'cust_id' => 'abc124'
)
Run Code Online (Sandbox Code Playgroud)
这是我试图删除的方式:
$collection->remove(array('_id' => new MongoId(1)), true);
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误.PHP php手册说:
"要根据其ID删除文档,您需要确保将ID作为MongoID对象而不仅仅是字符串传递:"
但我的id是一个int,我无法弄清楚删除id引用的文档的过程.
非常感谢您的帮助.谢谢.
Der*_*ick 12
你使用了一个普通的整数(MongoInt32)作为_id字段.MongoInt32与MongoID不同.他们是两个不同的类.您可以使用以下命令将其删除:
$collection->remove( array( '_id' => new MongoInt32(1) ) );
Run Code Online (Sandbox Code Playgroud)
附加信息:
_id如果您没有自己设置值,MongoId将用作字段的值,例如:
$collection->insert( array( 'cust_id' => 'abc124' ) );
Run Code Online (Sandbox Code Playgroud)
如果您检索此文档,则会看到var_dump():
array(2) {
'_id' =>
class MongoId#6 (1) {
public $$id =>
string(24) "51ee74e944670a09028d4fc9"
}
'cust_id' =>
string(6) "abc124"
}
Run Code Online (Sandbox Code Playgroud)
文档中的注释表示您现在无法删除该文档:
$collection->remove( array( '_id' => '51ee74e944670a09028d4fc9' ) );
Run Code Online (Sandbox Code Playgroud)
但相反,你需要使用:
$collection->remove( array( '_id' => new MongoID( '51ee74e944670a09028d4fc9' ) ) );
Run Code Online (Sandbox Code Playgroud)
作为最后一点,我想提一下,你首先不必使用new MongoInt32(1),你可以使用:
$document = array (
'_id' => 1,
'cust_id' => 'abc124'
);
Run Code Online (Sandbox Code Playgroud)
如果您使用的是32位平台(或Windows),并且需要处理大量数据,则只需要MongoInt32/MongoInt64.
| 归档时间: |
|
| 查看次数: |
10405 次 |
| 最近记录: |