加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

mongo实现子文档的任意查询

发布时间:2020-12-15 01:23:16 所属栏目:C语言 来源:网络整理
导读:对于子文档的查询,通常可以根据$slice获取子集,但是这个子集是连续的,如果想要任意数量的符合条件的子文档,可以使用如下的方法: db.test3.find().pretty(){ "_id" : NumberLong(1181675746),"shard_qty" : 4,"goods_qty" : 0,"shop_qty" : 0,"favorite_

对于子文档的查询,通常可以根据$slice获取子集,但是这个子集是连续的,如果想要任意数量的符合条件的子文档,可以使用如下的方法:

 db.test3.find().pretty()
{
    "_id" : NumberLong(1181675746),"shard_qty" : 4,"goods_qty" : 0,"shop_qty" : 0,"favorite_qty" : 4,"favorite_shards" : [
        {
            "sid" : NumberLong(580),"favorite_dt" : ISODate("2015-06-26T04:13:06.405Z"),"is_attention" : true
        },{
            "sid" : NumberLong(579),{
            "sid" : NumberLong(578),{
            "sid" : NumberLong(577),"favorite_dt" : ISODate("2015-06-26T05:20:48.449Z"),"is_attention" : true
        }
    ]
}
> db.test3.aggregate([
... {"$match":{"_id":NumberLong(1181675746)}},... {"$project":{"_id":1,"favorite_shards":1}},... {"$unwind": "$favorite_shards"},//将数组拆开
... {$match: {"favorite_shards.sid": {'$in':[NumberLong(577),NumberLong(578)]}}},//找到满足条件的文档
... {"$group": {"_id": "$_id","favorite_shards": {"$push": "$favorite_shards"}}}  //重组符合条件的文档构造新的数组
... ]).pretty()
{
    "_id" : NumberLong(1181675746),"favorite_shards" : [
        {
            "sid" : NumberLong(578),"is_attention" : true
        }
    ]
}

这样就可以达到我们的需求。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读