如何使用mongoDB在数组中搜索多个值?

时间:2015-10-06 02:41:44

标签: node.js mongodb sails.js mongodb-query

我的数据对象如:

<div class="input-group">
    <div class="input-group-btn">
        <button type="button" class="btn btn-default"> << </button>
        <button type="button" class="btn btn-default"> < </button>
        <button type="button" class="btn btn-default"> > </button>
        <button type="button" class="btn btn-default"> >> </button>
    </div>

    <input type="number" style="width: 30px; " class="form-control input-number" placeholder="84" maxlength="4" value="34" min="0" max="9999" autocomplete="off" pattern="\d4" />
</div>

如果我使用字符串'Mon Sat Sun'搜索,则返回TRUE。 如果我使用字符串'Mon Web Sun'搜索,则返回FALSE。

请帮帮我,或提供关键字。非常感谢!

1 个答案:

答案 0 :(得分:1)

您希望$all基本上是$and条件,但语法更好:

db.hello.find({ "opening_time": { "$all": [ "Mon", "Sat", "Sun" ] } })

或者在失败的情况下:

db.hello.find({ "opening_time": { "$all": [ "Mon", "Wed", "Sun" ] } })

由于“Wed”不是数组中的值,因此它不匹配。

这是更好的形式:

db.hello.find({ "$and": [ 
    { "opening_time": "Mon" },
    { "opening_time": "Sat" },
    { "opening_time": "Sun" }
]})

这意味着您需要满足“所有”条件才能使其成为现实。

如果你有一个字符串,那么只需“拆分”它就可以形成数组参数:

var string = "Mon Sat Sun";

db.hello.find({ "opening_time": { "$all": string.split(" ") } })