0
私はこれら2つのモデル、製品とデザインを持っています。製品には、Design ObjectIdを使用する設計フィールドがあります。私はモンゴース質問ヌル人口
Product.find({...});
を照会するとき、私は製品を取り戻すいくつかの製品のためのよう
、MLAB DBに保存するときに時々、しかし、デザインは保存を終了していないが、それでも製品に保存したObjectIdを返します。 .design = someObjectId;
しかし、私は移入:
Product.find({...}).populate('design');
結果product.designは理にかなっている、nullです。今私はそれをバックアップする必要があります。私はすべての製品のクエリを実行していましたが、 'design'を入力した後、それぞれの製品を繰り返して、その製品設計が=== nullであるかどうかを確認しましたが、dbのProduct Docsが50Kを超えて、次のようになります。
ヌルに値を設定するデザインフィールドを持つ製品のみを返すには、どのクエリを実行する必要がありますか?
設計フィールドはすでにObjectIdで埋められていますが、既存のドキュメントにはリンクしていません。 Product.find({design: ""})を実行すると、[] –
が返されます。 {_id:56902c2263b132b0976c14ad、作成日:2016-03-23T23:07:19.759Z、デザイン:5660effabb790c22059a4114} Product.find({...})を実行したときに影響を受ける製品は、 Product.find({...})を実行するとpopulate( 'design')が返されます。{_id:56902c2263b132b0976c14ad、作成:2016-03-23T23:07:19.759Z、デザイン:null} そのObjectIdにはデザインが存在しないためです。しかし、最初のクエリでは、製品にはまだ設計フィールドがあります。したがって、{$ exists:false、$ ne: ""}のチェックは機能しません。 –
すべてのドキュメントを作成してから、2番目のクエリを実行して、どのドキュメントにデザインフィールドがnullであるかを確認してそこから更新を行うような理由がありますか?私はより良い取り扱い方法を考えることはできませんが、他の誰かがより良い解決策を持っているかもしれません。 – user2263572