如何在不同的字段上查询“not”值?

时间:2018-04-24 09:33:19

标签: php mongodb

我有这个mongo数据库:

<fieldset>
            <legend>Bestel gegevens</legend>
            <div class="container">
                <div class="row">
                    <div class="span7 id=" houtsoorten"">
                        <div class="control-group">
                            <label class="control-label">
                                bangkirai
                                <input id="chk_bangkirai" type="checkbox" 
onchange="enableTextBox()" >
                            </label>
                            <div class="controls">
                                <div class="input-append">
                                    <input class="inpbox input-mini" 
type="number" id="bangkirai" name="bangkirai" placeholder="aantal" disabled 
onkeyup="enableTextBox()" onchange="enableTextBox()">
                                    <span class="add-on">stuks</span>
                                    <div style="display:none;" id="bangkirai_validation">Please enter a value</div>
                                </div>
                            </div>
                        </div>
                        <div class="control-group">
                            <label class="control-label">
                                beukenhout
                                <input id="chk_beukenhout" type="checkbox" onchange="enableTextBox2()" >
                            </label>
                            <div class="controls">
                                <div class="input-append">
                                    <input class="inpbox input-mini" 
 type="number" id="beukenhout" name="beukenhout" placeholder="aantal" 
 disabled onkeyup="enableTextBox2()" onchange="enableTextBox2()" >

                                    <span class="add-on">stuks</span>
                                    <div style="display:none;" id="beukenhout_validation">Please enter a value</div>
                                </div>
                            </div>
                        </div>

现在,我需要过滤掉“播放”或“动作”或“移动”值为“run_walk”的项目并获得此结果:

{ "name" : "A", "action" : "walk" }
{ "name" : "B", "play" : "run_walk" }
{ "name" : "C", "action" : "run_walk" }
{ "name" : "D", "play" : "walk" }
{ "name" : "E", "move" : "walk" }
{ "name" : "F", "move" : "run_walk" }

mongo版本是2.6.X. 有些原因让我无法将mongo版本更新到更高版本。

1 个答案:

答案 0 :(得分:0)

您想要$nor

db.collection.find({
  "$nor": [
    { "play": "run_walk" },
    { "action": "run_walk" },
    { "move": "run_walk" }
  ]
})

或者简单地说#34;以run&#34;开始:{

db.crap.find({
  "$nor": [
    { "play": /^run/ },
    { "action": /^run/ },
    { "move": /^run/ }
  ]
})

或者用PHP说法

find([
  '$nor' => [
    [ 'play' => 'run_walk' ],
    [ 'action' => 'run_walk' ],
    [ 'move' => 'run_walk' ]
  ]
])

同样的&#34;以&#34;

开头
find([
  '$nor' => [
    [ 'play' => [ '$regex' => '^run' ] ],
    [ 'action' => [ '$regex' => '^run' ] ],
    [ 'move' => [ '$regex' => '^run' ] ]
  ]
])

这基本上是一个$not$or条件相结合,寻找任何指定条件&#34;不匹配&#34;。

没有任何版本依赖于此,因为这些基本查询运算符自初始版本以来就已存在。