查询-根据mongodb中的特定字段设置限制

时间:2020-04-22 09:09:51

标签: mongodb

查询-在strict_id = 13546456566时不显示数据

假设我们有一个集合,并且其中的字段名称strict_id的值为13546456566,但我不想在restrict_id具有下一个值之前不显示任何数据,它将显示如何使此查询成为mongodb

  {
    "_id": ObjectID("5e9eb49efc81c83087396ff2"),
    "group_id": ObjectID("5e4e755b380054797d9db627"),
    "date": 1587459230192,
    "text": "First"
}

{
    "_id": ObjectID("5e9eb49efc81c83087396ff2"),
    "group_id": ObjectID("5e4e755b380054797d9db627"),
    "date": 1587459230192,
    "text": "Second"
}

{
    "_id": ObjectID("5e9eb49efc81c83087396ff2"),
    "group_id": ObjectID("5e4e755b380054797d9db627"),
    "restrict_id": "13546456566"
    "date": 1587459230192,
    "text": "Third"
}

{
    "_id": ObjectID("5e9eb49efc81c83087396ff2"),
    "group_id": ObjectID("5e4e755b380054797d9db627"),
    "date": 1587459230192,
    "text": "Fourth"
}

所以在这里我的Texture集合说您可以跳过认为相同的对象_id,其复制的对象是不同的,但问题是我想跳过所有的前三个,因为它具有标志strict_id = 13546456566仅用于显示第四个文本值在mongodb中如何显示

1 个答案:

答案 0 :(得分:0)

除非对文档进行了排序,否则“任何以前看过的文档都包含此值”的区别是没有意义的。

MongoDB没有任何类型的查询状态变量可以设置为true并在文档之间保留以表明这已经发生。

使用汇总,您可以: -整理文件 -将它们全部推入阵列 -减少数组以应用条件创建新数组 -展开数组 -将文档恢复到以前的状态

db.collection.aggregate([
  {$sort:{sortField:1}},
  {$group:{
           _id:null, 
           documents:{$push:"$$ROOT"}
  }},
  {$project:{
             keepers:{
                $reduce:{
                         input:"$documents",
                         initialValue:{keep:false,documents:[]},
                         in:{
                              keep:{$or:[
                                         "$$value.keep",
                                         {$eq:["$$this.restrict_id","13546456566"]}
                         ]},
                         documents:{
                            $cond:[
                               "$$value.keep",
                               {$concatArrays:["$$value.documents",["$$this"]]},
                               []
                            ]}
                         }
                }
            }
  }},
  {$unwind:"$keepers.documents"},
  {$replaceRoot:{newRoot:"$keepers.documents"}}
])

TaskContinuationOptions

相关问题