MongoDB:拉完Key:Array对

MongoDB: Pull complete Key:Array Pair

我有这样的 MongoDB Collection:

{
  date: date,
  domain: domain,
  visitors:  [ {owner:owner, ip:ip, views:views} ]
}

现在我想检查日期等于日期和域等于域的位置它应该删除整个访问者数组,例如:

collection.update({"date":date, {"domain":domain} {"$pull":{"visitors"}} )

如何进行这项工作?

您可以尝试使用 $set 运算符清空访问者数组,而不是使用 $pull 运算符删除所有项目,这会比 $pull 快得多对数组进行计算:

db.collection.update( {"date": date, "domain": domain}, { $set : {"visitors": [] }} , {multi: true} )

等效的$pull操作是

db.collection.update( {"date": date, "domain": domain}, { $pull : { "visitors": {} }}, {multi: true} )
db.test.update({"$and": [{date:"date"}, {domain:"domain"}]}, {"$set":{visitors:[]}})

您应该使用 $and operator 来匹配您的更新查询。

从数组中删除所有元素与将访问者的值设置为空数组相同[ ]。但是设置为空数组更快更易写和理解,所以你应该使用这个。