【问题标题】:$all not working with array$all 不适用于数组
【发布时间】:2016-09-15 01:40:54
【问题描述】:

我正在尝试获取包含数组中列出的所有 tags 的所有 submissions 文档。

我当前的代码如下所示:

submissions.find({ tags: { $all => tags } })
print tags.count

但是,在运行时,我在第二行收到以下错误:

BSON::InvalidKey at /
NilClass instances are not allowed as keys in a BSON document.

还应注意,以下确实可以正常工作(尽管它没有达到我想要的结果):

submissions.find({ tags: tags })
print tags.count

如何修复我的原始代码以正确找到所需的文档?

【问题讨论】:

    标签: mongodb bson mongodb-ruby


    【解决方案1】:

    MongoDB 中的 $all 表达式为:

    submissions.find({ tags: { $all: tags }});
    

    在这种情况下,“标签”必须是一个数组 (tags = ['tag1','tag2','tag3'])

    你为什么使用“$all => tags”而不是“$all: tags”?

    【讨论】:

    • 我一开始是这样尝试的,但它给了我一个语法错误,所以我改变了它。在您指出这一点之后,我意识到 '$all' 应该是 ruby​​ 中的字符串,这是错误的根源。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2020-10-09
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多