MongoDB: 쿼리를 표준화할 수 없음: BadValue Projection에는 포함과 제외가 혼합되어 있을 수 없습니다.
저는 MongoDB에서 CakePHP를 사용하는 것이 더 새것입니다.
제가 다음 쿼리를 작성할 때 매우 잘 실행될 것입니다.
db.testData.find()
{
"_id" : ObjectId("53d1f79db8173a625961ff3d"),
"name" : "sadikhasan",
"created" : ISODate("2014-07-25T06:22:21.701Z")
}
다음 쿼리를 실행하여 가져오기만 하는 경우name
오류를 반환합니다.
db.testData.find({},{name:1, created:0})
error: {
"$err" : "Can't canonicalize query: BadValue Projection cannot
have a mix of inclusion and exclusion.",
"code" : 17287
}
다음 쿼리를 실행하여 가져오기만 하는 경우name
와 함께_id:0
그러면 잘 실행됩니다.
db.testData.find({},{name:1, _id:0})
{ "name" : "sadikhasan" }
내 질문은 내가 글을 쓸 때 왜 오류가 발생하는지입니다.created:0
투영 목록에 있습니다.미리 도와주셔서 감사합니다.
포함과 제외를 혼합할 수 없습니다. 유일한 예외는_id
들판.
예를 들어 다음과 같은 기능이 있습니다.
{
"_id": ObjectId("53d1fd30bdcf7d52c0d217de"),
"name": "bill",
"birthdate": ISODate("2014-07-80T00:00:00.000Z"),
"created": ISODate("2014-07-25T06:44:38.641Z")
}
"이름"과 "생년월일"만 원하는 경우 다음 작업을 수행해야 합니다.
db.collection.find({},{ "_id": 0, "name": 1, "birthdate": 1 })
또는 다음과 같습니다.
db.collection.find({},{ "_id": 0, "created": 0 })
그러나 "_id" 이외의 다른 작업은 "혼합"할 수 없습니다.
db.collection.find({},{ "_id": 0, "name": 1, "created": 0 })
오류가 발생할 수도 있습니다.
이 내용은 모두 설명서 페이지에서 다룹니다.
포함과 제외를 모두 혼합하고 있기 때문에 "쿼리를 표준화할 수 없습니다: 잘못된 값 투영에는 포함과 제외가 혼합될 수 없습니다." 오류가 발생합니다.1은 포함을, 0은 제외를 나타냅니다.쿼리에 0 또는 1을 사용할 수 있습니다.따라서 _id 및 name 필드만 표시하려면 다음 중 하나를 사용할 수 있습니다. 1) 포함:
db.testdata.find({}, {_id:1,name:1})
또는 2) 제외:
db.testdata.find({},{created:0})
위의 두 시나리오에서 _id 및 name 필드만 표시됩니다.
저도 같은 문제에 부딪혔습니다.즉, MongoDB에게 특정 필드를 선택하고 다른 필드를 선택 취소하도록 동시에 지시할 수 없습니다.
잘못된 것입니다. 선택 옵션 오류: -프로젝션에는 포함과 제외가 혼합될 수 없습니다.
reviewSchema.pre(/^find/, function (next) {
this.populate({
path: 'tour',
select: 'name -__v'
})
next();
});
올바른 형식입니다.
reviewSchema.pre(/^find/, function (next) {
this.populate({
path: 'tour',
select: 'name' // Removed -__v
})
next();
});
솔루션을 설명하기 위해 간단한 단어로 MongoDB에 원하는 모든 필드 또는 MongoDB에서 원하지 않는 필드를 알려줄 수 있습니다.
즉, 선택 방법에서 필수 또는 필수가 아닌 필드만 언급하면 됩니다.아래와 같이
find({<!--query here--!>}).select({
password: 0,
allowed_ip: 0,
username: 0,
password: 0,
__v: 0,
_id: 0
});
0(제외/필수) 또는 1(포함/필수 필드) 환호여야 합니다!!!
언급URL : https://stackoverflow.com/questions/24949544/mongodb-cant-canonicalize-query-badvalue-projection-cannot-have-a-mix-of-incl
'source' 카테고리의 다른 글
이미지를 카메라 롤에 저장하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
---|---|
Azure 앱 서비스 플랜을 일시 중지하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
"git --bare init" 저장소는 어떻게 사용합니까? (0) | 2023.05.07 |
T-SQL에서 데이터베이스 이름에 변수를 사용하는 방법은 무엇입니까? (0) | 2023.05.07 |
Angular-cli 빌드로 사용자 지정 파일을 포함하는 방법은 무엇입니까? (0) | 2023.05.07 |