2013-06-26 3 views
1

Je suis un débutant chez MongoDB et je suis actuellement en train de le coupler avec php pour essayer de faire le travail suivant:
Je veux créer une base de données pour stocker des informations peut être mis à jour à tout moment mais il doit conserver une date "document ajouté le:".
En somme:
MongoDB: Si le document existe VS Si le document n'existe pas

si le document existe:
tout -Mise à jour dans le document, sauf le "document ajouté sur" l'entrée de la date.
ELSE
-Crée un document avec les données + une date «document ajouté à: XXXXX».

Dans le cas d'une base de données avec ce format:

Database{ document{ User_ID: "12345", Name: "Joe", More_Info: "" Date_Added_To_DB: "1372291496", Last_Updated:"1372291556"}}


J'ai recherché et demandé autour et le meilleur que j'ai jusqu'à présent est une fonction qui mettra à jour une document entier s'il existe et créer un nouveau document si ce n'est pas le cas.

db.Database.update ({ 'user_id': $ userid}, {set $: { 'fieldName': nouvelle "data"}}, {upsert: true})

Répondre

1

La question est de savoir comment vous déterminez que "le document" existe? Habituellement, vous le feriez en utilisant un identifiant unique. Maintenant, le ObjectId de MongoDB vient à la rescousse car il contient déjà un horodatage. Cela peut également be used in queries. Au lieu d'utiliser un champ entier User_ID, vous pouvez envisager d'appeler le champ _id et d'utiliser le type de données ObjectId afin d'obtenir cette fonctionnalité gratuitement.

> db.test.insert({"foo" : "test"}); 
{ "_id" : ObjectId("51cb763e58bb4077aea65b3d"), "foo" : "test" } 
> var foo = db.test.findOne(); 
> foo._id.getTimestamp(); 
ISODate("2013-06-26T23:16:14Z") 
Questions connexes