如何排除包含文本的字段,并且 return 既为空又不存在?
How to exclude a field that contains text, and return both null and does not exist?
我正在使用 Studio3T 运行 MongoDB,但我是初学者。我有一个 publication.notes 字段,我用它来从报告中排除项目,这个字段通常不被使用,所以大多数文档没有填充这个字段,我们已经 运行 宁这个代码下面为报告。 (publication.notes是最后一行)
{
$and: [
{
"warehouses.code": "RSDMAIN"
}
,
{
"warehouses.0.quantity": {
$gt: NumberInt(0)
}
}
,
{
"images.0.image": {
$exists: false
}
}
,
{
"featured_image.slug": {
$exists: false
}
}
,
{
"publication.status": {
$ne: "discontinued"
}
}
,
{
"publication.status": {
$ne: "rejected"
}
}
,
{
"product_type": {
"$in":[
"standard" ,
null
]
}
}
,
{
"publication_notes": {
$exists: false
}
}
]
}
问题是我们有一小部分文档确实填充了发布说明,但它仍然是空的。我希望我的报告包含 null 和不存在的文档,同时仍然排除具有实际文本的文档。我尝试的一切都让我要么为空,要么为 DNE。
我试着玩弄 "publication.notes": { $not: { $type: 2 } } ,但他们 return 与 "publication_notes": { $exists: false },这让我觉得它正在将字段中的任何内容视为字符串,即使它为空。
请尝试 publication_notes : null
获取 null 和 not exists
样本收集
> db.t44.find()
{ "_id" : ObjectId("5c3543fc01f1171d3864b924"), "a" : "asdaw" }
{ "_id" : ObjectId("5c35440201f1171d3864b925"), "a" : null }
{ "_id" : ObjectId("5c35440601f1171d3864b926") }
查找结果
> db.t44.find({a : null})
{ "_id" : ObjectId("5c35440201f1171d3864b925"), "a" : null }
{ "_id" : ObjectId("5c35440601f1171d3864b926") }
>
我正在使用 Studio3T 运行 MongoDB,但我是初学者。我有一个 publication.notes 字段,我用它来从报告中排除项目,这个字段通常不被使用,所以大多数文档没有填充这个字段,我们已经 运行 宁这个代码下面为报告。 (publication.notes是最后一行)
{
$and: [
{
"warehouses.code": "RSDMAIN"
}
,
{
"warehouses.0.quantity": {
$gt: NumberInt(0)
}
}
,
{
"images.0.image": {
$exists: false
}
}
,
{
"featured_image.slug": {
$exists: false
}
}
,
{
"publication.status": {
$ne: "discontinued"
}
}
,
{
"publication.status": {
$ne: "rejected"
}
}
,
{
"product_type": {
"$in":[
"standard" ,
null
]
}
}
,
{
"publication_notes": {
$exists: false
}
}
]
}
问题是我们有一小部分文档确实填充了发布说明,但它仍然是空的。我希望我的报告包含 null 和不存在的文档,同时仍然排除具有实际文本的文档。我尝试的一切都让我要么为空,要么为 DNE。
我试着玩弄 "publication.notes": { $not: { $type: 2 } } ,但他们 return 与 "publication_notes": { $exists: false },这让我觉得它正在将字段中的任何内容视为字符串,即使它为空。
请尝试 publication_notes : null
获取 null 和 not exists
样本收集
> db.t44.find()
{ "_id" : ObjectId("5c3543fc01f1171d3864b924"), "a" : "asdaw" }
{ "_id" : ObjectId("5c35440201f1171d3864b925"), "a" : null }
{ "_id" : ObjectId("5c35440601f1171d3864b926") }
查找结果
> db.t44.find({a : null})
{ "_id" : ObjectId("5c35440201f1171d3864b925"), "a" : null }
{ "_id" : ObjectId("5c35440601f1171d3864b926") }
>