2017-08-24 19 views
0

の構築:item _id, price _id,と価格型の配列が空であるかどうかを確認:は、私はこのようなモデルを持っているのmongoクエリ

[{item: { 
    _id: 123, 
    field1: someValue, 
    price: { 
     [_id: 456, 
     field1: anotherValue, 
     type: []], 
     [_id: 789, 
     field1: anotherValue, 
     type: ['super']] 
    } 
}] 

私は3つのパラメータによって項目を見つける必要があります。そして1つの価格フィールドでそれをチェックしてください。

Model.findOneAndUpdate({_id: 123, "price._id": 456, "price.type": {size:0}) 

このクエリは常に商品を返し、異なる価格で検索します。

Model.findOneAndUpdate({_id: 123, price: {id: 456, type: {size:0}) 

このクエリは、エラー(キャスト配列の値など)を返します。 は$in, $and,でクエリを作成しようとしたが、それでもエラーに

+0

あなたは見つけるまたは更新しようとしていますか? – abdul

+0

find-updateの場合はelse - 何もしない – Over9000

答えて

0

使用$ elemMatch取得:

$ elemMatch演算子は、指定されたすべてのクエリ に一致する少なくとも一つの要素を持つ配列フィールド を含む文書にマッチするが基準。

db.inventory.find({ 
    price: { 
     "$elemMatch": { 
      _id: 456, 
      type: { 
       $size: 0 
      } 
     } 
    } 
}) 
関連する問題