sql >> データベース >  >> NoSQL >> MongoDB

refがnullでない場合にのみマングースにデータを入力しようとしています-機能していません

    コードの実行順序を理解する必要があります:

    1. mongooseは、{_creator:{$ne:null}}のデータベースからすべての書籍を取得します 。 Mongoは、書籍コレクション内の参照のみを調べて、返却するドキュメントを決定しています。あなたの本にはまだ著者への参照があり、mongoはAuthorsコレクションに一致する著者がいないことに気付かないため、あなたの本が読み込まれます。

    2. mongooseは、返されたすべての結果を入力します。したがって、Authorsコレクションから作成者をロードし、参照を実際のオブジェクトに置き換えます。あなたの本では、一致する著者が見つからないため、nullを配置します そこの。

    そのため、結果リストが作成されます。

    Mongoは結合をサポートしていません。したがって、複数のコレクションからのデータを含むクエリを実行することはできません。 Populateは、結果リスト内の参照を実際のデータに置き換える方法にすぎません。入力されたデータをwhere句の一部として使用することはできません。

    問題を解決するには、次のいずれかを実行できます。

    • 最終結果リストをJSコードでフィルタリングします。例: lodashライブラリの_.filterを使用します。
    • 著者を削除するたびに、すべての書籍を更新し、参照を削除してください。 Author-Schemaのフックを使用してこれを行うことができます。

    AuthorSchema.post('remove', function(doc) {// update your books here});




    1. 時間別のMongoDBグループ

    2. MongoDBはその空間インデックスをどのように実装しますか?

    3. 新しいドキュメントの作成中のCosmosDBエラーコード400

    4. マングースfindOneの使い方