我有包含tags
数组的文档.我想在网站上提供基于标签的推荐,所以我需要获取包含相同标签的文档+与1个标签不匹配的文档+与2个标签不匹配的文档等...
我怎么做?
示例集合:
db.tags.insert({"tags":["red", "tall", "cheap"]}); db.tags.insert({"tags":["blue", "tall", "expensive"]}); db.tags.insert({"tags":["blue", "little", "cheap"]});
找到包含标签"blue"的所有内容
db.tags.find({tags: { $elemMatch: { $eq: "blue" } }})
找到所有标记为"蓝色",只有蓝色
db.tags.find({tags: "blue"})
找到所有标记为"蓝色"和"便宜"的人
db.tags.find({ tags: { $all: ["cheap", "blue"] } } )
找到所有不是"蓝色"
db.tags.find({tags: { $ne: "blue" } })
找到所有"蓝色"和"便宜"但不是"红色"而不是"高"
在我的mongo db中不可能.从mongodb 1.9.1这样的东西应该可以工作,但是(未测试):
db.tags.find({ $and: [ {tags: { $all: ["blue", "cheap"] } }, { tags: { $nin: ["red", "tall"] } } ] })