Javascript 由js编写的mongodb查询脚本。使用条件作为要迭代的数组

Javascript 由js编写的mongodb查询脚本。使用条件作为要迭代的数组,javascript,mongodb,mongodb-query,Javascript,Mongodb,Mongodb Query,这是我写的剧本。但是find方法中的条件是:“replicas.status”,这里的replicas是一个数组。我想迭代所有副本并过滤每个副本的状态。所以我相信我写的是不正确的。我如何改进它?谢谢。在forEach块中,对于每个文档,为什么不迭代该文档的所有“replica.status”,然后构造一个更新查询,然后进行更新?如果我理解错了您的问题,请告诉我。@AbhishekKumar,因为replications属性是一个数组。我需要迭代每个aquaObject文档的每个副本状态是每个副本

这是我写的剧本。但是find方法中的条件是:
“replicas.status”
,这里的
replicas
是一个数组。我想迭代所有副本并过滤每个副本的状态。所以我相信我写的是不正确的。我如何改进它?谢谢。

在forEach块中,对于每个文档,为什么不迭代该文档的所有“replica.status”,然后构造一个更新查询,然后进行更新?如果我理解错了您的问题,请告诉我。@AbhishekKumar,因为
replications
属性是一个数组。我需要迭代每个aquaObject文档的每个副本<代码>状态是每个副本的一个属性。但是我已经想出了一个解决方案,我可以使用
$elemMatch
来完成过滤工作。如下所示:
var objects=db.aquaObject.find({“副本”:{$ne:null},“副本”:{$elemMatch:{“状态”:{$nin:legalStatus}}})
    db = db.getSiblingDB("aqua") //same as use otherdb
    var legalStatus=["initiate","process","complete","replicating","failed","offline_complete","offline_fail","invalid"];
    var replicas=db.aquaObject.find({"replicas":{$ne:null},"replicas.status":{$nin:legalStatus}});
    replicas.forEach(
function(t){
    db.aquaObject.update(t,{$set:{"replicas.0.status":"initiate"}});
});