V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ChanneW
V2EX  ›  问与答

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

  •  
  •   ChanneW · 2014-08-06 14:43:19 +08:00 · 2690 次点击
    这是一个创建于 3763 天前的主题,其中的信息可能已经有所发展或是发生改变。
    应该说 Nosql 的对这类型问题都怎么做?
    redis 做 blog 怎么做?
    6 条回复    2014-08-06 23:03:38 +08:00
    ijse
        1
    ijse  
       2014-08-06 15:10:10 +08:00
    用MongoDB, 我是这样查的:
    ```
    find({ 'tags': { '$elemMatch': { $in [q_reg] } } })
    ```
    ChiChou
        2
    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
        3
    ChiChou  
       2014-08-06 15:16:37 +08:00   ❤️ 1
    靠,亏我辛辛苦苦手打了这么多缩进,全吃了
    ChanneW
        4
    ChanneW  
    OP
       2014-08-06 15:41:50 +08:00
    @ChiChou 辛苦
    gihnius
        5
    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
        6
    ChiChou  
       2014-08-06 23:03:38 +08:00
    @gihnius 我写的例子是一次匹配多个 tag,单个的时候 $in 是足够了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   911 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:13 · PVG 04:13 · LAX 12:13 · JFK 15:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.