var MongoClient = require('mongodb').MongoClient
, format = require('util').format;
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
if(err) throw err;
var collection = db.collection('test_insert');
collection.insert({a:2}, function(err, docs) {
collection.count(function(err, count) {
console.log(format("count = %s", count));
});
// Locate all the entries using find
collection.find().toArray(function(err, results) {
console.dir(results);
// Let's close the db
db.close();
});
});
})
var mongodb = require('mongodb');
var server = new mongodb.Server("192.168.1.16", 27017, {}); //本地27017端口
new mongodb.Db('test', server, {}).open(function (error, client) {//数据库:test
// if (error) throw error;
var collection = new mongodb.Collection(client, 'Messages'); //表:Messages
collection.find(function (error, cursor) {
cursor.each(function (error, doc) {
if (doc) {
console.log("MyName:" + doc.MyName + " msg:" + doc.msg);
}
});
});
});
If this document doesn't answer your questions, see the source of Collection or Cursor, or the documentation at MongoDB for query and update formats.
FindThe find method is actually a factory method to create Cursor objects. A Cursor lazily uses the connection the first time you call nextObject, each, or toArray.
The basic operation on a cursor is the nextObject method that fetches the next matching document from the database. The convenience methods each and toArray call nextObject until the cursor is exhausted.
Signatures:
var cursor = collection.find(query, [fields], options);
cursor.sort(fields).limit(n).skip(m).
cursor.nextObject(function(err, doc) {});
cursor.each(function(err, doc) {});
cursor.toArray(function(err, docs) {});
cursor.rewind() // reset the cursor to its initial state.
Useful chainable methods of cursor. These can optionally be options of find instead of method calls:
.limit(n).skip(m) to control paging.
.sort(fields) Order by the given fields. There are several equivalent syntaxes:
.sort({field1: -1, field2: 1}) descending by field1, then ascending by field2.
.sort([['field1', 'desc'], ['field2', 'asc']]) same as above
.sort([['field1', 'desc'], 'field2']) same as above
.sort('field1') ascending by field1
Other options of find:
fields the fields to fetch (to avoid transferring the entire document)
tailable if true, makes the cursor tailable.
batchSize The number of the subset of results to request the database to return for every request. This should initially be greater than 1 otherwise the database will automatically close the cursor. The batch size can be set to 1 with batchSize(n, function(err){}) after performing the initial query to the database.
hint See Optimization: hint.
explain turns this into an explain query. You can also call explain() on any cursor to fetch the explanation.
snapshot prevents documents that are updated while the query is active from being returned multiple times. See more details about query snapshots.
timeout if false, asks MongoDb not to time out this cursor after an inactivity period.
For information on how to create queries, see the MongoDB section on querying.
var MongoClient = require('mongodb').MongoClient
, format = require('util').format;
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
if(err) throw err;
var collection = db
.collection('test')
.find({})
.limit(10)
.toArray(function(err, docs) {
console.dir(docs);
});
});
Signature:
collection.insert(docs, options, [callback]);
where docs can be a single document or an array of documents.
Useful options:
safe:true Should always set if you have a callback.
See also: MongoDB docs for insert.
var MongoClient = require('mongodb').MongoClient
, format = require('util').format;
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
if(err) throw err;
db.collection('test').insert({hello: 'world'}, {w:1}, function(err, objects) {
if (err) console.warn(err.message);
if (err && err.message.indexOf('E11000 ') !== -1) {
// this _id was already inserted in the database
}
});
});
Note that there's no reason to pass a callback to the insert or update commands unless you use the safe:true option. If you don't specify safe:true, then your callback will be called immediately.
Update: update and insert (upsert)The update operation will update the first document that matches your query (or all documents that match if you use multi:true). If safe:true, upsert is not set, and no documents match, your callback will return 0 documents updated.
See the MongoDB docs for the modifier ($inc, $set, $push, etc.) formats.
Signature:
collection.update(criteria, objNew, options, [callback]);
Useful options:
safe:true Should always set if you have a callback.
multi:true If set, all matching documents are updated, not just the first.
upsert:true Atomically inserts the document if no documents matched.
Example for update:
var MongoClient = require('mongodb').MongoClient
, format = require('util').format;
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
if(err) throw err;
db.collection('test').update({hi: 'here'}, {$set: {hi: 'there'}}, {w:1}, function(err) {
if (err) console.warn(err.message);
else console.log('successfully updated');
});
});
findAndModify is like update, but it also gives the updated document to your callback. But there are a few key differences between findAndModify and update:
Signature:
collection.findAndModify(query, sort, update, options, callback)
The sort parameter is used to specify which object to operate on, if more than one document matches. It takes the same format as the cursor sort (see Connection.find above).
See the MongoDB docs for findAndModify for more details.
Useful options:
remove:true set to a true to remove the object before returning
new:true set to true if you want to return the modified object rather than the original. Ignored for remove.
upsert:true Atomically inserts the document if no documents matched.
Example for findAndModify:
var MongoClient = require('mongodb').MongoClient
, format = require('util').format;
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
if(err) throw err;
db.collection('test').findAndModify({hello: 'world'}, [['_id','asc']], {$set: {hi: 'there'}}, {}, function(err, object) {
if (err) console.warn(err.message);
else console.dir(object); // undefined if no matching object exists.
});
});
var constr = "mongodb://sa:123456@192.168.1.16:27017";
包田耘 发表于 2014-6-28 23:55
还是不是太明白哦。那个要Server端写的代码要在哪个文件下创建啊。最近在弄node连接mongodb老是出错。
包田耘 发表于 2014-6-28 23:55
还是不是太明白哦。那个要Server端写的代码要在哪个文件下创建啊。最近在弄node连接mongodb老是出错。
欢迎光临 苏飞论坛 (http://www.sufeinet.com/) | Powered by Discuz! X3.4 |