mongodb objetcid_如何用$elemMatch返回数组中多条数据

在MongoDB 3.0.10环境下,面对查询语句只能返回数组中一个匹配文档的问题,可以采用聚合操作解决。通过$match、$unwind、$match和$group四个步骤,成功地从"path"字段的数组中筛选并返回所有匹配的数据。
摘要由CSDN通过智能技术生成

问题描述

服务器环境:mongo server version 3.0.10

内容格式:

{

"_id" : ObjectId("582bc1b1421e46e4c14e2be8"),

"date" : "2016-10-21",

"path" : [

{

"url" : "http://m.xin.com/quanguo/sanling/yishen/?q=三菱翼神",

"query" : "三菱翼神",

"dttime" : "2016-10-21 12:41:36",

"time_stamp" : 1477024896,

"platform" : "m"

},

{

"url" : "http://m.xin.com/quanguo/sanling/yishen/?q=三菱翼神",

"query" : "三菱翼神",

"dttime" : "2016-10-21 12:41:36",

"time_stamp" : 1477024896,

"platform" : "m"

}

],

"cid" : "ecabb21f-cb89-992f-79d9-b920427097bf"

}

查询语句:

db.dw_all_query_user_path.find({"path.query":/三菱/i},{"path":{"$elemMatch":{"query": /三菱/i}}})

经测试$elemMatch只能返回数组中的一个文档。

请问如何能将path数组中的数据全部返回?

解决方案

使用聚合

db.dw_all_query_user_path.aggregate(

{

$match:{

"path.query":/奔驰/i

}

},

{

$unwind:'$path'

},

{

$match:{

'path.query':/奔驰/i

}

},

{

$group:{

_id:'$_id',

cid:{$first:'$cid'},

date:{$first:'$date'},

path:{$push:'$path'}

}

}).pretty()

最终还是得到了需要的数据格式。感谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值