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

时间:2015-02-21 17:55:32

标签: mongodb mongodb-query

我有一个集合项目,其中有一个数组,用于存储访问过该项目网址的所有客户的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地址,如果没有,则添加它,否则返回true

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

1 个答案:

答案 0 :(得分:2)

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

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

<强>输出

1