source

필드가 MongoDB와 함께 존재하는지 확인

bestscript 2023. 2. 22. 22:31

필드가 MongoDB와 함께 존재하는지 확인

필드 세트가 있고 null이 아닌 모든 레코드를 찾고 있습니다.

사용해보겠습니다.$exists단, MongoDB 매뉴얼에 따르면 이 쿼리는 null과 동일한 필드를 반환합니다.

$exists는 null 값을 저장하는 필드가 포함된 문서와 일치합니다.

그래서 저는 다음과 같은 일을 해야 한다고 생각합니다.

db.collection.find({ "fieldToCheck" : { $exists : true, $not : null } })

그런데 이걸 시도할 때마다 에러가 나요.[invalid use of $not]이걸 어떻게 문의해야 할지 아는 사람?

사용하다$ne('같지 않음'의 경우)

db.collection.find({ "fieldToCheck": { $ne: null } })

다음과 같은 컬렉션이 있다고 가정합니다.

{ 
  "_id":"1234"
  "open":"Yes"
  "things":{
             "paper":1234
             "bottle":"Available"
             "bottle_count":40
            } 
}

병마개가 있는지 없는지 알고 싶습니다.

응답:

db.products.find({"things.bottle":{"$exists":true}})

나는 이것이 나에게 효과가 있다는 것을 알았다.

db.getCollection('collectionName').findOne({"fieldName" : {$ne: null}})

이 코멘트는 2021년에 작성되었으며 MongoDB 5.X 이전 버전에 적용됩니다.

쿼리 성능중시하는 경우 $exists를 사용하지 마십시오(또는 쿼리된 필드에 스파스 인덱스가 있는 경우에만 사용).sparse 인덱스는 쿼리의 기준과 일치해야 합니다.즉, $sparse:true를 검색하는 경우 sparse 인덱스는 필드에 있어야 합니다.{$exist:true}, $sparse:true를 조회하는 경우 sparse 인덱스는 필드 에 있어야 합니다.{$exist:false}

대신 다음을 사용합니다.

db.collection.find({ "fieldToCheck": {  $ne: null } })

또는

db.collection.find({ "fieldToCheck": {  $eq: null } })

이 경우 컬렉션의 모든 문서에 FieldToCheck를 포함해야 합니다.단, 퍼포먼스가 대폭 향상됩니다.

db.<COLLECTION NAME>.find({ "<FIELD NAME>": { $exists: true, $ne: null } })

저 같은 경우에는 새로운 필드를 추가했습니다.isDeleted : true삭제되는 필드만 표시합니다.

그래서 다른 모든 기록에는isDeleted필드, 그래서 나는 모든 필드를 취득하고 싶었다.isDeleted존재하지 않거나 false입니다.그래서 쿼리는

.find({ isDeleted: { $ne: true } });

[ I Try to convert it to boolean condition ](테이블명을 가진 문서가 이미 존재하는 경우)로 변환하려고 했습니다.이 경우 같은 문서에 추가되며 그렇지 않은 경우 1개가 생성됩니다.

table_name은 문서를 찾으려는 변수입니다.

query = { table_name : {"$exists": "True"}}
    
    result = collection.find(query)
    flag = 0
    for doc in result:
        collection.update_one({}, { "$push" : { table_name : {'name':'hello'} } } )
        flag = 1
    if (flag == 0):
        collection.insert_one({ table_name : {'roll no' : '20'}})

집약 예

https://mongoplayground.net/p/edbKil4Zvwc

db.collection.aggregate([
  {
    "$match": {
      "finishedAt": {
        "$exists": true
      }
    }
  },
  {
    "$unwind": "$tags"
  },
  {
    "$match": {
      "$or": [
        {
          "tags.name": "Singapore"
        },
        {
          "tags.name": "ABC"
        }
      ]
    }
  },
  {
    "$group": {
      "_id": null,
      "count": {
        "$sum": 1
      }
    }
  }
])

언급URL : https://stackoverflow.com/questions/19868016/check-that-field-exists-with-mongodb