官方示例
const _ = db.command
db.collection('todos').doc('doc-id').update({
data: {
tags: _.addToSet({
each: ['database', 'cloud']
})
}
})
each应为&each,否则addToSet的参数会作为一个对象添加进去
正确写法应为
const _ = db.command
db.collection('todos').doc('doc-id').update({
data: {
tags: _.addToSet({
$each: ['database', 'cloud']
})
}
})
你好,感谢反馈,文档内容已更新,稍后可查看。
我这里使用这个,会重复添加,有时能检查到重复,有时不能:
数据:
// 更新数据 const favoriteList2 =[{ vehicleFile_id: favoriteItem.id, licensePlateNumber: favoriteItem.licensePlateNumber, phoneNumber: favoriteItem.phoneNumber, startingStation: favoriteItem.startingStation, terminus: favoriteItem.terminus, }] collectionDataUserInfos.updateData = { data: { // 数组更新操作符。原子操作。给定一个或多个元素,除非数组中已存在该元素,否则添加进数组。 favoriteList: _.addToSet({ $each: favoriteList2, }) } }
数据库操作语句:
const updateResult = await db.collection(collectionData.collection) .doc(collectionData.updateWhere._id) .update(collectionData.updateData)
结果:
数据一模一样,有时退拒绝提交,有时可以,基本可以提交,并且我写了时间间隔3秒才能点第二下,还是会成功,不知道什么原因
// 我的数据结构:
const callInList = [{userInfo_id:'ss',callInList_id:'dd',name:'xx'}]
•
//可以避免重复添加的语法:
// 关键是 where部分(网上找的 monogodb 语法改的)
•
const updateResult = await db.collection('集合名称')
.where({
// 注意不加 id,所以记录都会 add
_id: callInList[0].userInfo_id,
// addToSet 通过 $ne 控制重复
"callInList.callInList_id": { $ne: callInList[0].callInList_id }
})
.update({
data: {
callInList:_.addToSet({
$each: callInList,
})
}
})
•
if (updateResult.stats.updated > 0) {
console.log('添加成功')
}else{
console.log('添加失败,可能是已经存在')
}
// 这种办法是要有一个id 可以供$ne使用才行
"callInList.callInList_id1": { $ne: callInList[0].callInList_id1 },
"callInList.callInList_id2": { $ne: callInList[0].callInList_id2 }
大概这种样子,按感觉是并且,但是实际是或者的感觉,只要有要给满足就写入不了