获取集合中不符合条件的所有文档
Get all documents in collection that do not match criteria
我有一个给定的查询criteria
,它可能会也可能不会返回collection
的一些文档。我想得到所有不满足criteria
的文件。所以基本上如果我使用collection.find(criteria)
,collection
中的所有文档都找不到.
我有两种方法:
- 否定查询。我尝试了
collection.find({$not: criteria})
抛出错误。 - 获取所有文档并减去与
criteria
匹配的文档:collection.find()
''collection.find(criteria)
以"''"为补码运算符。- 但我不知道该怎么做。
你能给我一个Javascript/Node的代码示例吗?
我认为您的查询必须如下所示:
db.collection.find( { field: { $nin: [ "value_1", "value_2" ] } } );
$not
用于与其他比较运算符混合,例如:
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
尝试使用$not
时抛出的错误(无论它是什么)表明您没有正确使用它。Mongo $not文档显示了以下示例:
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
如果criteria
是复杂的查询,则此操作将不起作用。您需要将其分解为每个字段的单独条件,并适当地应用它。
或者,要查找另一个集合(补码)中不存在的项目集,您可以尝试如下操作:
var setA = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var setB = ['c', 'd', 'g'];
var complement = setA.filter(function (item) {
return setB.indexOf(item) === -1;
});
有关特定于 Mongo 的更具体的实现,请查看 $setDifference 操作,它:
取两个集合并返回一个数组,其中包含仅 存在于第一组中
相关文章:
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 文档中的多个条件语句
- 从 JSON 对象数组中获取与条件匹配的文档
- 使用 OR 条件删除带有猫鼬的 MongoDB 中的文档
- 如何找到符合某些条件的猫鼬子文档
- 获取集合中不符合条件的所有文档
- 我可以在mongoDB中找到基于填充条件的文档吗
- xhtml文档没有读取条件样式表
- 如何在Mongodb中返回符合给定条件的子文档数组
- 是否有任何关于如何填充修订说明以及在什么条件下填充的文档
- 我可以在我的html文档底部放置条件注释吗?(在身体里)还是应该在头脑里
- 如何从文档中删除子文档,其中条件x = true或条件y = true