mongodb 的根据 标签 查文章怎么做?

2014-08-06 14:43:19 +08:00
 ChanneW
应该说 Nosql 的对这类型问题都怎么做?
redis 做 blog 怎么做?
2625 次点击
所在节点    问与答
6 条回复
ijse
2014-08-06 15:10:10 +08:00
用MongoDB, 我是这样查的:
```
find({ 'tags': { '$elemMatch': { $in [q_reg] } } })
```
ChiChou
2014-08-06 15:14:47 +08:00
标签用 array 存储,如
{
_id: 123,
title: "Advanced jQuery tricks",
tag: ["frontend", "javascript", "jquery"],
...
}

查询的时候用

db.colleciton.find({
"title": {
'$elemMatch': {
'tag': {
'$in': ['jquery', 'javascript']
}
}
}
})

第二个问题参考《Redis 入门指南》
http://book.douban.com/subject/24522045/
ChiChou
2014-08-06 15:16:37 +08:00
靠,亏我辛辛苦苦手打了这么多缩进,全吃了
ChanneW
2014-08-06 15:41:50 +08:00
@ChiChou 辛苦
gihnius
2014-08-06 15:59:03 +08:00
@ijse
@ChiChou elemMatch 不是更多的用于数组元素是嵌套文档时的复杂查询么?
这种情况 'tags': [x, y, z, a, b, c] 直接 $in 就可以了 find({tags: {$in: [x, y, z]}}) 或者 $all, 看具体情况.
ChiChou
2014-08-06 23:03:38 +08:00
@gihnius 我写的例子是一次匹配多个 tag,单个的时候 $in 是足够了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/126398

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX