当前位置:  开发笔记 > 编程语言 > 正文

MongoDB:按标签获取文档

如何解决《MongoDB:按标签获取文档》经验,为你挑选了1个好方法。

我有包含tags数组的文档.我想在网站上提供基于标签的推荐,所以我需要获取包含相同标签的文档+与1个标签不匹配的文档+与2个标签不匹配的文档等...

我怎么做?



1> rompetroll..:

示例集合:

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"] } } ] })


你没有得到这个想法.我不需要完全匹配.我希望所有包含至少一个标签的文档按照其包含的原始标签的数量排序.
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有