如何计算嵌入式mongodb php?

迪卡·安达鲁

我有 php 和 MongoDB 的问题。这是我的文档:

"_id" : ObjectId("58d7815f387e76880c000000"),
"receiver" : "Katty",
"chat" : [
                {
                        "sender" : "jhon",
                        "date" : ISODate("2017-03-26T08:53:55Z"),
                        "message" : "Who are you?"
                        "status" : "sent"
                },
                {
                         "sender" : "jhon",
                        "date" : ISODate("2017-03-26T08:53:55Z"),
                        "message" : "What do you want?"
                        "status" : "pending"
                }
                {
                         "sender" : "jhon",
                        "date" : ISODate("2017-03-26T08:53:55Z"),
                        "message" : "Hah ?"
                        "status" : "pending"
                }
]

这是我的 php 程序:

<?php
$conn = new Mongo();
$db = $conn->selectDB('basarnas');
$query = $db->informasi_bencana;
$nosql = array("_id"=> new MongoId($id), "chat.status"=>"pending");
$result = $query->find($nosql);
$beritasar = $result->count();
$total = $beritasar;
echo "status pending = ".$total;
?>

结果是

status pending = 1

我想要的结果是

status pending = 2

当嵌入的文档具有 status = "pending" 时如何计算它?

舒米·古普塔

您可以展开嵌入的文档,然后匹配状态,然后使用 groupby 计算所有文档。

db.collection.aggregate([

                        { "$unwind": "$chat"},
                       {$match:{"chat.status": "pending"}}, 
                        { "$group":{"_id":null, count: {$sum:1}}}
                ])

或者

简化获取所有文档并计算数组的长度

db.collection.aggregate([

                        { "$unwind": "$chat"},
                       {$match:{"chat.status": "pending"}}, 

                ])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档