After some practice on ReactJS, moved back to NodeJS. Interactive design is pale if it can only play alone. Quite often, ReactJS, NodeJS are written together with SQL or nonDB (NoSQL Database) on job description. MongoDB is a famous nonDB.
I'm using external MongoDB on https://account.mongodb.com/account/login. Topic related to npm installation, please refer to https://www.w3schools.com/nodejs/nodejs_mongodb.asp My .js codes connect to MongoDB via URI string. Confidential information is encapsulated in a class object as a required file.
So, here we go! My exercises follow w3schools's tutorial, but designed in much simple way. To me, "simple" doesn't only mean "short". Clean slate also plays an important role. I may use embed function as few as possible.
The MangoClient.connect() API is different from what is on w3school's tutorial. And when I did research, it take me a while to reach the current API documentation, v3.5
NodeJS's MongoDB API v3.5
Since I quite often get v.1.8/1.9 API, probably still some programmers doesn't notice that connect() takes different parameters....
API documentation is quite profound. Usually I define callback functions according to API Docs. ie. the 2nd parameter of connection()'s callback function is connection object.
I don't think MongoDB really cares whethere db or collection is created, if there is nothing inside.... Don't know. Din't have time to try. As I can see, conn.db(dbName) doesn't really make any call to db host, and then it create a collection with specified db name. As we can see later on, I can also set a nested document even when the structure wasn't defined yet. But only one layer. Maybe I can try to set value cross multi-layers someday.....
Usually I don't use the collection object returned by db.createCollection()'s callback.
kimetsu..... Can refere to Kimetsu no Yaiba 😜
Always remember to close connection at the end. This is a good habit.
There are insertOne() and insertMany()
I prefer to use insertMany() since it can also insert only one record.
I intentionally design a complex structure. Though it is not ideal, probably redundant... Many tutorial provide key-value, hash-table like structure which is not very practical in my work. I need to use complicated structure, and must be able to manipulate it.
There are string, array and nested object in design.
I found query is rather difficult, comparing to SQL..... Quite often, I couldn't get anything if I didn't precisely match the value. Then what is the query for? if I must know everything! Alright... it's because I'm not very familiar with nonDB. I tried to use regular expression to retrieve multiple data, with rule such like 'there are "er" in string'....... Anyway, it is a good chance to practice regular expression. (Maybe too few records is also one of my troubles.)
Query a nested structure, key names be refereed as dot-connected string.
As regular expression, the definition string needs no quotes.
find() function doesn't return records, it only return a cursor. toArray() function processes the cursor and passes data to callback function.
Query on array element is similar to query a string.
project() function decide which column to or not to return. It is a cursor process function; doesn't process the result. It hands data to toArray() to deal with decipher.
sort() function decide ascend or descend order. It is only a cursor process function, too.
I'm using external MongoDB on https://account.mongodb.com/account/login. Topic related to npm installation, please refer to https://www.w3schools.com/nodejs/nodejs_mongodb.asp My .js codes connect to MongoDB via URI string. Confidential information is encapsulated in a class object as a required file.
So, here we go! My exercises follow w3schools's tutorial, but designed in much simple way. To me, "simple" doesn't only mean "short". Clean slate also plays an important role. I may use embed function as few as possible.
Create Connection
The MangoClient.connect() API is different from what is on w3school's tutorial. And when I did research, it take me a while to reach the current API documentation, v3.5
NodeJS's MongoDB API v3.5
Since I quite often get v.1.8/1.9 API, probably still some programmers doesn't notice that connect() takes different parameters....
API documentation is quite profound. Usually I define callback functions according to API Docs. ie. the 2nd parameter of connection()'s callback function is connection object.
Create DB, Collection
I don't think MongoDB really cares whethere db or collection is created, if there is nothing inside.... Don't know. Din't have time to try. As I can see, conn.db(dbName) doesn't really make any call to db host, and then it create a collection with specified db name. As we can see later on, I can also set a nested document even when the structure wasn't defined yet. But only one layer. Maybe I can try to set value cross multi-layers someday.....
Usually I don't use the collection object returned by db.createCollection()'s callback.
kimetsu..... Can refere to Kimetsu no Yaiba 😜
Close Connection
Always remember to close connection at the end. This is a good habit.
Insert Record
There are insertOne() and insertMany()
I prefer to use insertMany() since it can also insert only one record.
I intentionally design a complex structure. Though it is not ideal, probably redundant... Many tutorial provide key-value, hash-table like structure which is not very practical in my work. I need to use complicated structure, and must be able to manipulate it.
There are string, array and nested object in design.
Query Records
I found query is rather difficult, comparing to SQL..... Quite often, I couldn't get anything if I didn't precisely match the value. Then what is the query for? if I must know everything! Alright... it's because I'm not very familiar with nonDB. I tried to use regular expression to retrieve multiple data, with rule such like 'there are "er" in string'....... Anyway, it is a good chance to practice regular expression. (Maybe too few records is also one of my troubles.)
Query Nested Structure
Query a nested structure, key names be refereed as dot-connected string.
As regular expression, the definition string needs no quotes.
find() function doesn't return records, it only return a cursor. toArray() function processes the cursor and passes data to callback function.
Query Array
Query on array element is similar to query a string.
project() function decide which column to or not to return. It is a cursor process function; doesn't process the result. It hands data to toArray() to deal with decipher.
Sort Query
sort() function decide ascend or descend order. It is only a cursor process function, too.
Comments
Post a Comment