2012-05-22 19 views
5

C'è qualcosa di sbagliato in questa query e non posso dire di cosa si tratta. Sono sicuro che è qualcosa di molto semplice:! E.eoo() errore nella query MongoDB

db.foo.insert({ 
    'created at': new Date(), 
    ooc: false, 
    body: '<p>Moo</p>\n', 
    keywords: [ 'Moo' ], 
    mentioned: [], 
    tags: [], 
    sender: { 
     _id: 'stuff', 
     name: 'lambdadusk', 
     'display name': 'Lambda' 
    } 
}); 

L'errore che ottengo da Mongo è semplicemente

!e.eoo() 

sto usando MongoDB 2.0.5. Googling l'errore non mi ha detto molto.

+2

Fantastico! Questo errore è esattamente il rumore che faccio quando vedo errori di codice. –

+0

@MattGibson Spero che tu non stia prendendo in giro la mia stupidità. – Lanbo

+0

Niente affatto. Questo è un vero stupore che un sistema possa emettere un messaggio di errore che è sia inutile che stranamente simile al rumore che farei quando vedevo un messaggio di errore inutile. Non dovresti sentirti stupido per non sapere cosa fare con quello. Gli sviluppatori di Mongo hanno molto da rispondere se è tutto per te. –

risposta

2

Avrei dovuto provarlo prima.

Il problema non è la query, ma il file di dati BSON della raccolta è stato danneggiato in qualche modo. Ho dovuto lasciare la raccolta, quindi riprovare.

Fortunatamente, la raccolta era vuota poiché sono in fase di sviluppo.

0

eoo significa end-of-object e, se non è presente, è possibile che si verifichi un errore di analisi nel JSON. Forse Mongo vuole un JSON rigorosamente valido, quindi potrebbe essere necessario usare virgolette doppie per tutte le stringhe e magari rimuovere il nuovo bit Date().

http://jsonlint.com/ ha suggerito che questo sarebbe valido, mentre il codice che hai postato non lo è. Non sono sicuro che questo aiuti o meno come Mongo usa BSON, quindi potrebbe essere più flessibile.

{ 
    "created at": {}, 
    "ooc": false, 
    "body": "<p>Moo</p>\n", 
    "keywords": [ 
     "Moo" 
    ], 
    "mentioned": [], 
    "tags": [], 
    "sender": { 
     "_id": "stuff", 
     "name": "lambdadusk", 
     "displayname": "Lambda" 
    } 
}