我在Mongodb的集合中有一些文档:
{_id : ObjectId('533af69b923967ac1801e113'), fKey : '533aeb09ebef89282c6cc478', ... }
{_id : ObjectId('5343bd1e2305566008434afc'), fKey : ObjectId('5343bd1e2305566008434afc'), ...} }
如您所见,我的字段fkey可以由字符串或ObjectId设置。
我想获取所有与'533aeb09ebef89282c6cc478'或ObjectId('5343bd1e2305566008434afc')匹配的文档。
但是如果我跑:
db.mycollection.find({fkey : '533aeb09ebef89282c6cc478'})
我只得到集合的第一个文件。
有没有一种方法可以配置Mongodb,以便在不检查类型的情况下获取与请求匹配的所有文档?
谢谢你的帮助。
皮埃尔
这里有两个选项供您选择。
您可以使用mongo的$or
运算符:
db.mycollection.find({
$or: [
{ fKey: '533aeb09ebef89282c6cc478' },
{ fKey: ObjectId( '533aeb09ebef89282c6cc478' ) }
]
})
的
$or
操作者执行的逻辑OR
的两个或更多的阵列上操作<expressions>
和文件选择该的至少满足一个<expressions>
。
您还可以使用$in
运算符:
db.mycollection.find({
fKey: {
"$in": [ '533aeb09ebef89282c6cc478', ObjectId( '533aeb09ebef89282c6cc478' ) ]
}
})
在
$in
操作者选择其中一个场的值等于指定数组中的任何值的文件。
在我看来,这些不一致并不是要存在的。我建议您遍历您的代码和数据管道,并弄清楚谁/什么将fKey
使用未知数据类型插入值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句