願わくばこのプロジェクトのために、またあなたの助けが必要になります。これはよくある質問ですが、スタック オーバーフローの別の投稿やGoogle グループのヒントを試してみましたが、解決策がうまくいきませんでした。
私のコードは少し似ています:
mongoose = require('mongoose');
Schema = mongoose.Schema;
mongoose.connect(MONGO_SERVER);
ObjectId = Schema.ObjectId;
var RacesSchema = new Schema({
venue_id : { type: mongoose.Schema.ObjectId, ref: 'Venues' },
racetype : String
});
var races = mongoose.model('Races', RacesSchema );
function test() {
var MyObjectId = require('mongoose').Types.ObjectId;
queryVenue = new MyObjectId("50e3dcdbf30375180c078f64");
races.find({venue_id: queryVenue, racetype:'Test'})
.exec(function(err,data) {
}
test();
しかし、私は結果が得られないことを知っています。
よろしくお願いします!
アップデート
上記のコード サンプルを最小化しました。このテストは、文字列値を単独でクエリすると機能します。ObjectId をクエリするだけで失敗し、存在することがわかります。
JSON の更新
これが私が探しているものです:
{
"_id" : ObjectId("50e3dcddf30375180c078f85"),
"venue_id" : "50e3dcdbf30375180c078f64",
"racetype" : "A"
}
そして突然、私の答えが明らかになったと思います。これは単に、venue_id が実際には文字列だからですか? もしそうなら、マングーススキーマをそのままにして、文字列であるという検索を行う時点でクエリをキャストできますか? または、これらの値が (私が開発した別の .net アプリケーションから) 格納される方法を変更して、ObjectId として挿入する必要がありますか?
現在、別のクエリ、現在の mongoose スキーマ、およびデータベースの [実際のセットアップ] の方法については、populate() を使用して、参照されたテーブル (venue_id) の結果をこのモデルの現在のセットアップ方法で埋めるのに非常にうまく機能します。 、違いは上記のクエリだけで、venue_id を指定していません...
ありがとう。