2016-03-23 12 views
0

私はこれら2つのモデル、製品とデザインを持っています。製品には、Design ObjectIdを使用する設計フィールドがあります。私はモンゴース質問ヌル人口

Product.find({...}); 

を照会するとき、私は製品を取り戻すいくつかの製品のためのよう

、MLAB DBに保存するときに時々、しかし、デザインは保存を終了していないが、それでも製品に保存したObjectIdを返します。 .design = someObjectId;

しかし、私は移入:

Product.find({...}).populate('design'); 

結果product.designは理にかなっている、nullです。今私はそれをバックアップする必要があります。私はすべての製品のクエリを実行していましたが、 'design'を入力した後、それぞれの製品を繰り返して、その製品設計が=== nullであるかどうかを確認しましたが、dbのProduct Docsが50Kを超えて、次のようになります。

ヌルに値を設定するデザインフィールドを持つ製品のみを返すには、どのクエリを実行する必要がありますか?

答えて

0

このようなことをお探しですか?

Product.find(design : { exists : false }).exec(function(err,doc){ 
    if (err) throw err; 
    //this will be docs with design set to null 
    console.log(doc) 
}) 

更新日:必要な場合は教えてください。

+0

設計フィールドはすでにObjectIdで埋められていますが、既存のドキュメントにはリンクしていません。 Product.find({design: ""})を実行すると、[] –

+0

が返されます。 {_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: ""}のチェックは機能しません。 –

+0

すべてのドキュメントを作成してから、2番目のクエリを実行して、どのドキュメントにデザインフィールドがnullであるかを確認してそこから更新を行うような理由がありますか?私はより良い取り扱い方法を考えることはできませんが、他の誰かがより良い解決策を持っているかもしれません。 – user2263572