如果您要查询值,则可以这样做。但你正在尝试的是关键。我们必须在密钥上提供完全匹配。
我们可以使用$regex 来匹配值而不是键。
让我们收藏
db.collection.find();
{ "_id" : ObjectId("583eed6c911c8e111fb99bf4"), "name" : "a.aa.aaa" }
{ "_id" : ObjectId("583eed72911c8e111fb99bf5"), "name" : "a.bb.aaa" }
{ "_id" : ObjectId("583eed77911c8e111fb99bf6"), "name" : "a.bb.bbb" }
{ "_id" : ObjectId("583eed7b911c8e111fb99bf7"), "name" : "a.cc.bbb" }
{ "_id" : ObjectId("583eed7f911c8e111fb99bf8"), "name" : "a.cc.aaa" }
{ "_id" : ObjectId("583eed84911c8e111fb99bf9"), "name" : "a.cc.bbb" }
{ "_id" : ObjectId("583eed88911c8e111fb99bfa"), "name" : "a.cc.ccc" }
{ "_id" : ObjectId("583eed9a911c8e111fb99bfb"), "name" : "a.aa.ccc" }
{ "_id" : ObjectId("583eeda4911c8e111fb99bfc"), "name" : "a.aa.bbb" }
{ "_id" : ObjectId("583eedfd911c8e111fb99bfd"), "name" : "a.aa.abc" }
{ "_id" : ObjectId("583eee03911c8e111fb99bfe"), "name" : "a.bb.abc" }
{ "_id" : ObjectId("583eee06911c8e111fb99bff"), "name" : "a.cc.abc" }
那么使用 $regex 的查询就像
db.collection.find({name:{$regex: /a.*.aa*/}});
以及这个查询的结果
{ "_id" : ObjectId("583eed6c911c8e111fb99bf4"), "name" : "a.aa.aaa" }
{ "_id" : ObjectId("583eed72911c8e111fb99bf5"), "name" : "a.bb.aaa" }
{ "_id" : ObjectId("583eed7f911c8e111fb99bf8"), "name" : "a.cc.aaa" }
{ "_id" : ObjectId("583eed9a911c8e111fb99bfb"), "name" : "a.aa.ccc" }
{ "_id" : ObjectId("583eeda4911c8e111fb99bfc"), "name" : "a.aa.bbb" }
{ "_id" : ObjectId("583eedfd911c8e111fb99bfd"), "name" : "a.aa.abc" }
{ "_id" : ObjectId("583eee03911c8e111fb99bfe"), "name" : "a.bb.abc" }
{ "_id" : ObjectId("583eee06911c8e111fb99bff"), "name" : "a.cc.abc" }
请参考:Mongodb - regex match of keys for subobjects
希望对你有帮助!