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

マングース:ObjectIdへのキャストが値に対して失敗しました

    参照したマングースのドキュメントの例では、Numberを使用しています personSchema._idの場合 フィールド、およびObjectId 他の人のために。

    どちらかを使用できることを示すためだけに、例でこれを行っていると思います。 _idを指定しない場合 スキーマでは、ObjectId デフォルトになります。

    ここでは、すべてのレコードに_idがあります ObjectIdであるフィールド 、それでもあなたはそれらを数字のように扱っています。さらに、personIDのようなフィールド およびtaskID それらを定義する部分を省略しない限り、存在しません。

    すべての_idに数字を使用したい場合 フィールドでは、スキーマでそれを定義する必要があります。

    var newsSchema = new Schema({
      _id: Number,
      _creator: {type: ObjectId, ref: "Person"},
      // ...
    })
    
    var personSchema = new Schema({
      _id: Number,
      // ...
    })
    

    次に、特定のIDでニュースアイテムを作成し、それを作成者に割り当てます。

    var tony = new Person({_id: 0});
    var newsItem = new NewsItem({_id: 0, creator: tony.id});
    

    ただし、ここで注意すべきことは、ObjectId以外のものを使用する場合です。 _idとして フィールドでは、これらの値を自分で管理する責任を負っています。 ObjectIdは自動生成され、追加の管理は必要ありません。

    編集:あなたがあなたの協会の両側にrefを保存していることにも気づきました。これは完全に有効であり、時々実行したい場合もありますが、preに自分で参照を保存する必要があることに注意してください。 フック。



    1. 複数フィールドのMongoDB一意のインデックス

    2. ドキュメントフィールドMongoDBで類似性を見つける方法は?

    3. 欠落しているデータをスキップしながら、データ型を文字列から日付に変更します

    4. $ lookupの結果に条件をmongoDBに適用するにはどうすればよいですか?