我正在尝试从集合中的数组中删除元素。要删除元素,我必须查看索引(或日期)字段,并删除具有最低值的字段。我的名为“pages”的集合的示例表示:
{
"_id": {
"$oid": "52e12df7e4b06e4ed65a554c"
},
"posts": [
{
"postId": {
"$oid": "52e12e5933a9fbec1100002d"
},
"date": 1390489177.267876,
"index": 1
},
{
"postId": {
"$oid": "52e12e5f33a9fb141800002c"
},
"date": 1390489183.277084,
"index": 2
}
],
"skillname": "Bilardo",
"skilltag": "Bilardo",
"currentIndex": 2
}
我需要从posts数组中删除这个元素:
{
"postId": {
"$oid": "52e12e5933a9fbec1100002d"
},
"date": 1390489177.267876,
"index": 1
}
无论我做什么,我都无法找到数组中的最小“索引”字段。我写的最后一个PHP代码如下:
$this->db->pages->find(array( 'skilltag' => 'Bilardo'), array('posts.index' => 1))->sort( array("posts.index" => -1));
我不愿意使用“index”字段和“currentIndex”字段。但是我还是把它们放在了无法处理具有时间戳值的“日期”字段的情况下。
上面的代码返回一个只包含一个元素的数组,该元素是一个包含2个元素的数组:
{
"postId": {
"$oid": "52e12e5933a9fbec1100002d"
},
"date": 1390489177.267876,
"index": 1
},
{
"postId": {
"$oid": "52e12e5f33a9fb141800002c"
},
"date": 1390489183.277084,
"index": 2
}
是否有聚合函数在数组内部进行过滤?我找不到任何返回最小值的聚合。我只找到聚合来返回最小值和最大值之间的值,这些值必须由用户给出 - 这在我的情况下不起作用。