Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

MongoDB 집계에서 $redact 사용?

<시간/>

$redact는 문서 자체에 저장된 정보를 기반으로 문서의 내용을 제한합니다. $cond와 $redact를 함께 사용할 수 있습니다. 문서로 컬렉션을 만들자 −

> db.demo546.insertOne({"Value1":10,"Value2":20});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8e263f9e5f92834d7f05d7")
}
> db.demo546.insertOne({"Value1":40,"Value2":30,Value3:50});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8e26549e5f92834d7f05d8")
}
> db.demo546.insertOne({"Value1":100,"Value2":200,Value3:null});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8e26619e5f92834d7f05d9")
}
> db.demo546.insertOne({"Value1":400,"Value2":1000,Value3:null});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8e26e09e5f92834d7f05da")
}
> db.demo546.insertOne({"Value1":400,"Value2":200,Value3:null});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8e26f59e5f92834d7f05db")
}
> db.demo546.insertOne({"Value1":400,"Value2":1000,Value3:60});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8e27159e5f92834d7f05dc")
}

find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -

> db.demo546.find();

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" : ObjectId("5e8e263f9e5f92834d7f05d7"), "Value1" : 10, "Value2" : 20 }
{ "_id" : ObjectId("5e8e26549e5f92834d7f05d8"), "Value1" : 40, "Value2" : 30, "Value3" : 50 }
{ "_id" : ObjectId("5e8e26619e5f92834d7f05d9"), "Value1" : 100, "Value2" : 200, "Value3" : null }
{ "_id" : ObjectId("5e8e26e09e5f92834d7f05da"), "Value1" : 400, "Value2" : 1000, "Value3" : null }
{ "_id" : ObjectId("5e8e26f59e5f92834d7f05db"), "Value1" : 400, "Value2" : 200, "Value3" : null }
{ "_id" : ObjectId("5e8e27159e5f92834d7f05dc"), "Value1" : 400, "Value2" : 1000, "Value3" : 60 }

다음은 $exists with $redact with MongoDB 집계 -

에 대한 쿼리입니다.
> db.demo546.aggregate( { "$redact": { "$cond": { "if": { "$and": [ {
   "$lt": [ "$Value1", "$Value2" ] }, { "$ifNull": [ "$Value3", false ] } ] },
   "then": "$$KEEP", "else": "$$PRUNE" } }
} );

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" : ObjectId("5e8e27159e5f92834d7f05dc"), "Value1" : 400, "Value2" : 1000, "Value3" : 60 }