Firestore IN查询无法返回null值文档:是否为预期行为及解决方案
问题解答
1. 这是预期行为吗?
是的,这完全是MongoDB的预期行为。$in操作符只会精确匹配你指定数组内的元素。你之前的查询里只传入了空字符串""作为匹配值,null不在这个数组里,所以自然不会返回字段a为null的文档。
2. 如何让查询同时包含null值的文档?
有几种简单的实现方式,根据你的需求选择即可:
方式一:扩展$in的匹配数组
直接把null加入$in的匹配数组中,这样就能同时匹配空字符串和null:
db.collection.find({ a: { $in: ["", null] } })
方式二:使用$or条件明确指定两种情况
如果需要更清晰的逻辑表达,可以用$or分别列出空字符串和null的匹配条件:
db.collection.find({ $or: [ { a: "" }, { a: null } ] })
补充:如果需要匹配字段不存在的情况(可选)
虽然你提到所有文档都包含字段a,但如果后续有字段不存在的场景,可以在条件中加入$exists: false:
db.collection.find({ $or: [ { a: "" }, { a: null }, { a: { $exists: false } } ] })
内容的提问来源于stack exchange,提问作者Akkumulator
相关产品推荐
相关产品推荐

