【发布时间】:2015-02-18 20:40:07
【问题描述】:
我想保留一组类似于以下架构的可疑流量:
"_id": ObjectId(###),
"count": NumberInt(6),
"ip": NumberInt(2147483647),
"requests": {
[ "uri": "/path/to/something/",
"last": NumberInt(1419023477)
"count": NumberInt(2) ],
[ "uri": "/path/to/something/else/",
"last": NumberInt(1419023478)
"count": NumberInt(4) ]
}
有人可以帮我做一个简单的 upsert 吗:
- 将请求 URI 添加到嵌入文档数组中
- 增加对该 URI 的请求数
- 设置该 URI 的最后请求日期
- 最后增加该 IP 的总体请求计数
有人让我发布我目前所拥有的:
$db->coll->update(array('ip' => $ip),
array('$addToSet' => array('req' => array('$set' => array('last' => $timestamp),
'$inc' => array('count' => 1)))),
array('upsert' => true)
);
如您所见,它尚未搜索具有匹配 uri ($uri) 的嵌入式文档
【问题讨论】:
-
您编写代码,我们帮助修复它。不是相反。
-
请编辑问题以添加您尝试过的实现。
-
您的文档结构无效。
requests是一个对象数组吗? -
我还没有权限对你的回答发表评论,wdberkeley。 URI 的数量是固定的(总共 24 个),所以我并不担心数组越界。但正如你所说,如果列表增加,这是一件值得考虑的事情。 IP 刚刚转换为整数(只是因为我更喜欢整数):php.net/manual/en/function.ip2long.php
标签: php mongodb mongodb-php