私は、ドキュメントのコレクションを構築し、それらを EPUB または LaTeX レンダリング用に自動的にフォーマットするための簡単なツールを持っています。これは、ExpressJS の上に記述されています。それが問題なら、私はCoffeescriptを使用しています(私はそれを疑っています)。
Mongoose を使用すると、次のようになります。
DocumentSchema = new Schema
title: String
Offrefs = new Schema
ref: { type: ObjectId }
isa: String
BinderSchema = new Schema
title: String
contains: [Offrefs]
Offrefs は、論理コレクションを作成するために、他のバインダーにいくつかのバインダーを含めることができるようにしたいため、それが何を指すかを指定していません:「これらはプリンター用です」「これらは epub 用です」「これらは Web のみです。 」など(雑多なものはすべて取り除きました。)
残念ながら、取得したオブジェクトについて、クエリに遭遇しました
(story._id == offref.ref) -> True
そして、この 2 つは確かに同じに見えます。しかし:
(binder._id == offref.ref) -> False
(String(binder._id) == String(offref.ref)) -> True
最後の 2 つの参照を視覚的に比較すると、 ID 番号は同じですが、ObjectId
オブジェクトが正しく比較されていません。
これらの複雑なオブジェクトをデータのツリーに変換している場合、文字列変換を頻繁に行う必要はありません。ツリー関係は、どの DB においても重要です。MongoDB では難しくありません。
MongoDB で ObjectId の比較を行うにはどうすればよいですか?