我有一个集合项目,其中有一个数组,用于存储访问过该项目网址的所有客户的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
什么是最好和最有效的方法?
答案 0 :(得分:2)
您可以使用$addToSet
运算符执行此操作。
要检查您的数组是否已包含给定值,您需要的是使用nModified
db.collection.update({_id: "GM8M37EWTfZ2Jwatu"},
{$addToSet: {IPs: "98.245.153.111"}}
).nModified
<强>输出强>
1