W ten sposób nie można wykonywać zapytań dotyczących kluczy dokumentów. Możesz wyszukiwać dokładne dopasowania za pomocą $exists
, ale nie możesz znaleźć nazw kluczy pasujących do wzorca.
Zakładam (być może błędnie), że próbujesz znaleźć dokumenty, które mają pod-dokument URL i że nie wszystkie dokumenty będą go miały? Dlaczego nie zepchnąć tego typu informacji na niższy poziom, na przykład:
{
payload: {
type: "url",
url: "Facebook.com",
...
}
}
Następnie możesz zapytać:
db.foo.find({"payload.type": "url", ...})
Byłbym również niedbały, gdybym nie zauważył, że nie należy używać kropek (.
) to nazwy kluczy w MongoDB. W niektórych przypadkach możliwe jest tworzenie takich dokumentów, ale spowoduje to duże zamieszanie, gdy spróbujesz wykonać zapytanie do osadzonych dokumentów (gdzie Mongo używa kropki jako „separatora ścieżki”, że tak powiem).