我有这个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版本更新到更高版本。
答案 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;。
没有任何版本依赖于此,因为这些基本查询运算符自初始版本以来就已存在。