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



查询-不显示restrict_id=13546456566 的数据

假设我们有一个集合,其中有一个字段名称restrict_id,值为13546456566。我不想显示数据——在restrict_ids有值之前的任何数据——它将显示我如何使这个查询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"
}

所以在这里,我的纹理集合说,你可以跳过认为相同的Object _id,它复制的那些是不同的,但问题是我想跳过前三个,因为它的标志restrict_id=1354646566,只显示第四个文本值,这在mongodb 中是怎么可能的

除非对文档进行排序,否则"以前看到的文档中是否包含此值"的区别是没有意义的。

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"}}
])

游乐场

最新更新