检查 mongo 文档数组中是否存在值

check if value exists in mongo document array

我有一个 Items 集合,其中有一个数组存储所有访问过该项目 URL

的客户端的 IP 地址
{ 
    "title" : "asdads", 
    "artist" : "adsdd", 
    "description" : "adas", 
    "category" : "sheetmusic", 
    "price" : 15, 
    "publish" : true, 
    "downloadUrl" : "https1f5c69ce0c9eb1bc5032362d853d", 
    "s3key" : "ee33e7320b8a4fe881f5c69ce0c9eb1bc5032362d853d", 
    "userId" : "LnsYqhsefu7ZmQmTq", 
    "views" : 0, 
    "downloads" : 1, 
    "likes" : 0, 
    "dislikes" : 0, 
    "createdAt" : ISODate("2015-02-21T17:17:40.491Z"), 
    "_id" : "GM8M37EWTfZ2Jwatu" 
    "IPs: [
     "0.0.0.0"
    ]
}

我想知道给定的项目文档是否在其数组中有 ip 地址,如果没有,则添加它,否则 return true

最好和最有效的方法是什么?

您可以使用 $addToSet 运算符执行此操作。 要检查您的数组是否已包含给定值,您只需要使用 nModified

即可获得的已修改文档的数量
db.collection.update({_id: "GM8M37EWTfZ2Jwatu"}, 
    {$addToSet: {IPs: "98.245.153.111"}}
).nModified

输出

1