Javascript 有没有一种方法可以在不使用循环(即以数组为条件)的情况下更新mongodb文档?
这是我的文件 我想通过提供labTestType将请求下的paymentstatus更新为Payment 对象作为数组的列表Javascript 有没有一种方法可以在不使用循环(即以数组为条件)的情况下更新mongodb文档?,javascript,mongodb,Javascript,Mongodb,这是我的文件 我想通过提供labTestType将请求下的paymentstatus更新为Payment 对象作为数组的列表 试试这个代码这对我有用 db.getCollection('your_collection').findOneAndUpdate( { $and: [ { _id: new ObjectId(_id) }, //_id = "5ef05c35743df0112cbf5729"
试试这个代码这对我有用
db.getCollection('your_collection').findOneAndUpdate(
{
$and: [
{ _id: new ObjectId(_id) }, //_id = "5ef05c35743df0112cbf5729"
{ 'requests.labTestType': { $in: [new ObjectId('5ee752b9e26cbb3440b9259e'), new ObjectId('5ee752b9e26cbb3440b925b5')] } }]
},
{
$set: { 'requests.$.paymentstatus': 'paid'
} //set new payment status
})
这对我来说很管用我的财产少了$
谢谢但是我想像这样提供labTestType ObjectId数组[5ee752b9e26cbb3440b9259e,5ee752b9e26cbb3440b925b5],并一次更新多个字段。感谢Mayur Vaghasiya,代码中的$in属性帮助了很多人,如果接下来的结果是类似于[a,b,c,d,e,f]的字符串数组,您还可以帮助更新结果吗在我的代码中,我使用
findOneAndUpdate
。所以它只返回一个对象。
db.getCollection('your_collection').findOneAndUpdate(
{
$and: [
{ _id: new ObjectId(_id) }, //_id = "5ef05c35743df0112cbf5729"
{ 'requests.labTestType': { $in: [new ObjectId('5ee752b9e26cbb3440b9259e'), new ObjectId('5ee752b9e26cbb3440b925b5')] } }]
},
{
$set: { 'requests.$.paymentstatus': 'paid'
} //set new payment status
})
db.getCollection('your_collection').updateMany(
{_id: newObjectId(_id)},
{$set: {"requests.$[element].paymentstatus": "Paid"}},
{ multi:true,
arrayFilters: [{ "element.labTestType": {$in: arraywithobjectIds}}]
})