Próbuję przechowywać selektory mongoDB w kolekcji mongoDB, aby przeprowadzić dynamiczną analizę danych. Ale kiedy próbuję przechowywać bardziej złożone selektory, w tym $
-prefiksowane wyrażenia, takie jak następujące (uruchamiane z Meteor / JavaScript):
filterBy:
foo:
$ne: "bar"
Otrzymuję ten błąd:
key $ne must not start with "$"
Czy istnieje właściwy sposób przechowywania selektorów mongoDB lub czy muszę zbudować logikę, aby zastąpić i odwrócić wszystkie $
w obiekcie?
Odpowiedzi:
0 dla odpowiedzi № 1Jak wspomniano powyżej, pytanie ma odpowiedziano do celów ogólnych. Przedstawię tutaj rozwiązanie specyficzne dla Meteora.
Za pomocą Haki do kolekcji Meteor Dodałem automatyczną konwersję przy zapisie:
FilterCollection.before.insert (userId, doc) ->
if doc.filterBy?
doc.filterBy = JSON.stringify doc.filterBy
A potem używam zwykłego transform
aby przekonwertować to z powrotem:
FilterCollection = new Meteor.Collection "filters",
transform: (document) ->
if document.filterBy?
document.filterBy = JSON.parse document.filterBy