Solved

Mongodb using last result as the next query input?

Posted on 2016-10-24
6
24 Views
Last Modified: 2016-11-06
I have a mongodb document as below.  I want to return the documents with Maximum CurrentTicks, but since the tick was dynamically generated, I would need to return it to a variable LastTick, but when I try to retireve it in to the next query

First Query:          var LastTick = db.HKMachineStatus_v2.aggregate({$group: {_id : '' , Tick: {$max: "$CurrentTicks"}}})
Second Query:     db.HKMachineStatus_v2.find({"CurrentTicks" : LastTick})

it just return me "Fetched 0 record(s) in 5ms" But there is no result to return.

Then I only run the first Query it did return me the result as the image attached Result_outPut_1.jpg .

So my questions are
1. how to retrieve the Tick's value from LastTick
2. will my second Query success if I run in that way?
3. if not what will be better way to do it?  


below are the mongodb documents sample.

{
    "_id" : ObjectId("580e1f26fa9382133c202a04"),
    "ProcessTime" : "24472016-22:47:58",
    "HostName" : "APPServer",
    "IPAddress" : "192.168.0.1",
    "OS" : " Linux",
    "Status" : "Machine running",
    "CurrentTicks" : "636129460749210826"
},
{
    "_id" : ObjectId("580e1f26fa9382133c202a05"),
    "ProcessTime" : "24472016-22:47:58",
    "HostName" : "APPServer2",
    "IPAddress" : "192.168.0.2",
    "OS" : " Linux",
    "Status" : "Machine running",
    "CurrentTicks" : "636129460749210826"
},
{
    "_id" : ObjectId("580e21e1fa9382133c202d16"),
    "ProcessTime" : "24582016-22:58:57",
    "HostName" : "DC",
    "IPAddress" : "192.168.0.43",
    "OS" : " Windows",
    "Status" : "Machine running",
    "CurrentTicks" : "636129467352901129"
},
{
    "_id" : ObjectId("580e21e1fa9382133c202d17"),
    "ProcessTime" : "24582016-22:58:57",
    "HostName" : "DC2",
    "IPAddress" : "192.168.0.45",
    "OS" : " Windows",
    "Status" : "Machine running",
    "CurrentTicks" : "636129467352901129"
}

Open in new window

Result_output_1.JPG
0
Comment
Question by:Steve Wong
  • 2
  • 2
6 Comments
 
LVL 51

Expert Comment

by:Julian Hansen
ID: 41857780
Can you not just do a sort and take the top item?

If you don't find a solution - bump this thread and I will see if I can put a script together.
0
 

Author Comment

by:Steve Wong
ID: 41859000
Hi Julian,

Thanks for your reply,  I have some background to share with you first.

Background:

Currently I had 75 Machines provisioned, two days ago I scanned there was a 33 machines provisioned but last week there was 150+ machine provisioned.

I have a script running at the server backend to gather all the machines current status, I didn't know where they were  (which subnet and what there name was/is ) and how many we had, machines were dynamically provision and dismissal.

I knew the data-set is bounded with a Ticker. Each batch run on the script are on the same ticker no.

So could you kindly show me some scripts on how to make a mongodb query to get all machines from the largest ticker?

Regards,
Steve
0
 
LVL 82

Accepted Solution

by:
leakim971 earned 500 total points
ID: 41875673
1. how to retrieve the Tick's value from LastTick
with nodejs :
var tick = LastTick.Tick;

Open in new window

2. will my second Query success if I run in that way?
Not sure what it going to return as your CurrentTicks is not unique

3. if not what will be better way to do it?  
Another way to  get the last record using the _id :
var LastTick = db.HKMachineStatus_v2.find({}).sort({_id:-1}).limit(1);

Open in new window

0
 

Author Closing Comment

by:Steve Wong
ID: 41875897
Thanks, it works great
0
 
LVL 82

Expert Comment

by:leakim971
ID: 41876055
why a B grade ?
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

In my daily work (mainly using ASP.net), I need to write a lot of JavaScript code. One of the most repetitive tasks I do are the jQuery Ajax calls. You know: (CODE) I don't know if for you it's the same, but for me is soooo tedious to write the …
JavaScript can be used in a browser to change parts of a webpage dynamically. It begins with the following pattern: If condition W is true, do thing X to target Y after event Z. Below are some tips and tricks to help you get started with JavaScript …
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now