2

mongodbドキュメントに保存されている配列から特定の要素を削除したい。私はこれを使用しています:

 model.registerCompany.findOneAndUpdate({companyKey:"a key"},
    {$pop:{onlineEmployees:"John"}},
    function(err,doc){
    if(!err)
        console.log("Online list modified: ",doc);
    else
        console.log("Online list modified error :",err);
});

しかし、$ popが特定の要素「John」をarray(onlineEmployees)から削除するのか、それとも最後の要素をポップアウトするのかはわかりません。

私はそれを正しくやっていますか、それとも別の方法がありますか?

私は答えを得たと思います..リンクでここに説明されているように、$ pullはこの目的のために使用されます:http: //docs.mongodb.org/manual/reference/operator/pull/#_S_pull

4

1 に答える 1

13

$ pop演算子は、配列の最初または最後の要素を削除しますが、必ずしも正しい要素であるとは限りません。

特定の要素が必要な場合は、定義された基準でアイテムを$pullできます。

   model.registerCompany.findOneAndUpdate({companyKey:"a key"},
    {$pull:{onlineEmployees:"John"}},

$pull'John'という名前に一致するすべての要素を削除するために、配列内の値が一意であることを確認する必要があります。

配列に同じ値が存在する場合は、位置演算子を使用$unset$てターゲット要素の値をに設定しnull(残念ながら、$ unsetは要素を削除しません)、を使用$pullして値を持つ要素を削除する必要がありnullます。そのためには、有効な値がにできないことを確認する必要がありますnull。その場合、コードは次のようになります。

model.registerCompany.findOneAndUpdate({companyKey:"a key", onlineEmployees:"John"},{ $unset: { "onlineEmployees.$" : '' } } ) 
model.registerCompany.findOneAndUpdate({companyKey:"a key"},{ $pull: { "onlineEmployees" : null } } ) 
于 2013-01-23T09:16:22.673 に答える