이 같은 스키마가있는 경우 :ObjectId 필드에서 어떻게 결과를 찾을 수 있습니까?
var Word = new Schema({
name: { type: String, required: true },
language: { type: ObjectId, ref: "Language", required: true }
});
을하고 난 빈 결과 집합 ([]
)를 얻을이
var language = "5078547df6b753bc06000003";
word.find({ language: language }, function (err, words) {
console.log(words);
});
처럼 쿼리하려고합니다. 내가
var language = mongoose.Types.ObjectId("5078547df6b753bc06000003");
word.find({ language: language }, //etc.
를 사용하려고했습니다
[{
"_id": "5079fd7b6df57b1b64cbf25d",
"name": "dog",
"language": "5078547df6b753bc06000003",
}]
하지만 여전히 빈 결과 집합을 반환 : 나는이 {language: language}
를 제거하면 내가이 개체를 얻을 수 있기 때문에,이 언어와 단어가 존재하는 것을 알고있다.
왜 몽구스가이 언어 ID로 단어를 찾을 수 없습니까?
고마워요! 내 문제는 필드에 문자열 값을 삽입했다는 것인데, 자동으로 ObjectId로 변환된다고 가정합니다. –
@PeterOlson mongoose'create' 호출을 통해 문서를 만들면 문자열을 ObjectId로 변환합니다 (또는'new' 'save')하지만, 다른 방법으로 사용하면 안됩니다. – JohnnyHK